diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2015-08-14@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 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 [Network.AWS.KinesisAnalytics](http://hackage.haskell.org/package/amazonka-kinesis-analytics/docs/Network-AWS-KinesisAnalytics.html)
+See [Amazonka.KinesisAnalytics](http://hackage.haskell.org/package/amazonka-kinesis-analytics/docs/Amazonka-KinesisAnalytics.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-kinesis-analytics.cabal b/amazonka-kinesis-analytics.cabal
--- a/amazonka-kinesis-analytics.cabal
+++ b/amazonka-kinesis-analytics.cabal
@@ -1,102 +1,159 @@
-name:                  amazonka-kinesis-analytics
-version:               1.6.1
-synopsis:              Amazon Kinesis Analytics 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>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-kinesis-analytics
+version:            2.0
+synopsis:           Amazon Kinesis Analytics 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:
-    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.
-    .
-    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
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.KinesisAnalytics" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2015-08-14@ 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.KinesisAnalytics.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.KinesisAnalytics" 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-kinesis-analytics
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-kinesis-analytics
 
 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:
-          Network.AWS.KinesisAnalytics
-        , Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
-        , Network.AWS.KinesisAnalytics.AddApplicationInput
-        , Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration
-        , Network.AWS.KinesisAnalytics.AddApplicationOutput
-        , Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource
-        , Network.AWS.KinesisAnalytics.CreateApplication
-        , Network.AWS.KinesisAnalytics.DeleteApplication
-        , Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
-        , Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
-        , Network.AWS.KinesisAnalytics.DeleteApplicationOutput
-        , Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource
-        , Network.AWS.KinesisAnalytics.DescribeApplication
-        , Network.AWS.KinesisAnalytics.DiscoverInputSchema
-        , Network.AWS.KinesisAnalytics.ListApplications
-        , Network.AWS.KinesisAnalytics.StartApplication
-        , Network.AWS.KinesisAnalytics.StopApplication
-        , Network.AWS.KinesisAnalytics.Types
-        , Network.AWS.KinesisAnalytics.UpdateApplication
-        , Network.AWS.KinesisAnalytics.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.KinesisAnalytics.Types.Product
-        , Network.AWS.KinesisAnalytics.Types.Sum
+  exposed-modules:
+    Amazonka.KinesisAnalytics
+    Amazonka.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
+    Amazonka.KinesisAnalytics.AddApplicationInput
+    Amazonka.KinesisAnalytics.AddApplicationInputProcessingConfiguration
+    Amazonka.KinesisAnalytics.AddApplicationOutput
+    Amazonka.KinesisAnalytics.AddApplicationReferenceDataSource
+    Amazonka.KinesisAnalytics.CreateApplication
+    Amazonka.KinesisAnalytics.DeleteApplication
+    Amazonka.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
+    Amazonka.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
+    Amazonka.KinesisAnalytics.DeleteApplicationOutput
+    Amazonka.KinesisAnalytics.DeleteApplicationReferenceDataSource
+    Amazonka.KinesisAnalytics.DescribeApplication
+    Amazonka.KinesisAnalytics.DiscoverInputSchema
+    Amazonka.KinesisAnalytics.Lens
+    Amazonka.KinesisAnalytics.ListApplications
+    Amazonka.KinesisAnalytics.ListTagsForResource
+    Amazonka.KinesisAnalytics.StartApplication
+    Amazonka.KinesisAnalytics.StopApplication
+    Amazonka.KinesisAnalytics.TagResource
+    Amazonka.KinesisAnalytics.Types
+    Amazonka.KinesisAnalytics.Types.ApplicationDetail
+    Amazonka.KinesisAnalytics.Types.ApplicationStatus
+    Amazonka.KinesisAnalytics.Types.ApplicationSummary
+    Amazonka.KinesisAnalytics.Types.ApplicationUpdate
+    Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOption
+    Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription
+    Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate
+    Amazonka.KinesisAnalytics.Types.CSVMappingParameters
+    Amazonka.KinesisAnalytics.Types.DestinationSchema
+    Amazonka.KinesisAnalytics.Types.Input
+    Amazonka.KinesisAnalytics.Types.InputConfiguration
+    Amazonka.KinesisAnalytics.Types.InputDescription
+    Amazonka.KinesisAnalytics.Types.InputLambdaProcessor
+    Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription
+    Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate
+    Amazonka.KinesisAnalytics.Types.InputParallelism
+    Amazonka.KinesisAnalytics.Types.InputParallelismUpdate
+    Amazonka.KinesisAnalytics.Types.InputProcessingConfiguration
+    Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationDescription
+    Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate
+    Amazonka.KinesisAnalytics.Types.InputSchemaUpdate
+    Amazonka.KinesisAnalytics.Types.InputStartingPosition
+    Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration
+    Amazonka.KinesisAnalytics.Types.InputUpdate
+    Amazonka.KinesisAnalytics.Types.JSONMappingParameters
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseInput
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputDescription
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputUpdate
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutput
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputDescription
+    Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsInput
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsInputUpdate
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsOutput
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription
+    Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate
+    Amazonka.KinesisAnalytics.Types.LambdaOutput
+    Amazonka.KinesisAnalytics.Types.LambdaOutputDescription
+    Amazonka.KinesisAnalytics.Types.LambdaOutputUpdate
+    Amazonka.KinesisAnalytics.Types.MappingParameters
+    Amazonka.KinesisAnalytics.Types.Output
+    Amazonka.KinesisAnalytics.Types.OutputDescription
+    Amazonka.KinesisAnalytics.Types.OutputUpdate
+    Amazonka.KinesisAnalytics.Types.RecordColumn
+    Amazonka.KinesisAnalytics.Types.RecordFormat
+    Amazonka.KinesisAnalytics.Types.RecordFormatType
+    Amazonka.KinesisAnalytics.Types.ReferenceDataSource
+    Amazonka.KinesisAnalytics.Types.ReferenceDataSourceDescription
+    Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate
+    Amazonka.KinesisAnalytics.Types.S3Configuration
+    Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource
+    Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription
+    Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate
+    Amazonka.KinesisAnalytics.Types.SourceSchema
+    Amazonka.KinesisAnalytics.Types.Tag
+    Amazonka.KinesisAnalytics.UntagResource
+    Amazonka.KinesisAnalytics.UpdateApplication
+    Amazonka.KinesisAnalytics.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-kinesis-analytics-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  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.AWS.KinesisAnalytics
-        , Test.AWS.Gen.KinesisAnalytics
-        , Test.AWS.KinesisAnalytics.Internal
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.KinesisAnalytics
+    Test.Amazonka.KinesisAnalytics
+    Test.Amazonka.KinesisAnalytics.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-kinesis-analytics
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core               >=2.0 && <2.1
+    , amazonka-kinesis-analytics
+    , amazonka-test               >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AddApplicationInput.yaml b/fixture/AddApplicationInput.yaml
--- a/fixture/AddApplicationInput.yaml
+++ b/fixture/AddApplicationInput.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/AddApplicationOutput.yaml b/fixture/AddApplicationOutput.yaml
--- a/fixture/AddApplicationOutput.yaml
+++ b/fixture/AddApplicationOutput.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/AddApplicationReferenceDataSource.yaml b/fixture/AddApplicationReferenceDataSource.yaml
--- a/fixture/AddApplicationReferenceDataSource.yaml
+++ b/fixture/AddApplicationReferenceDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/CreateApplication.yaml b/fixture/CreateApplication.yaml
--- a/fixture/CreateApplication.yaml
+++ b/fixture/CreateApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/DeleteApplication.yaml b/fixture/DeleteApplication.yaml
--- a/fixture/DeleteApplication.yaml
+++ b/fixture/DeleteApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/DeleteApplicationOutput.yaml b/fixture/DeleteApplicationOutput.yaml
--- a/fixture/DeleteApplicationOutput.yaml
+++ b/fixture/DeleteApplicationOutput.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/DeleteApplicationReferenceDataSource.yaml b/fixture/DeleteApplicationReferenceDataSource.yaml
--- a/fixture/DeleteApplicationReferenceDataSource.yaml
+++ b/fixture/DeleteApplicationReferenceDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/DescribeApplication.yaml b/fixture/DescribeApplication.yaml
--- a/fixture/DescribeApplication.yaml
+++ b/fixture/DescribeApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/DiscoverInputSchema.yaml b/fixture/DiscoverInputSchema.yaml
--- a/fixture/DiscoverInputSchema.yaml
+++ b/fixture/DiscoverInputSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/ListApplications.yaml b/fixture/ListApplications.yaml
--- a/fixture/ListApplications.yaml
+++ b/fixture/ListApplications.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/StartApplication.yaml b/fixture/StartApplication.yaml
--- a/fixture/StartApplication.yaml
+++ b/fixture/StartApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/StopApplication.yaml b/fixture/StopApplication.yaml
--- a/fixture/StopApplication.yaml
+++ b/fixture/StopApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/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/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/UpdateApplication.yaml b/fixture/UpdateApplication.yaml
--- a/fixture/UpdateApplication.yaml
+++ b/fixture/UpdateApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/kinesisanalytics/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  kinesisanalytics.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/gen/Amazonka/KinesisAnalytics.hs b/gen/Amazonka/KinesisAnalytics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics.hs
@@ -0,0 +1,467 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics
+-- 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 @2015-08-14@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Kinesis Analytics is the easiest way to process streaming data in
+-- real time with standard SQL without having to learn new programming
+-- languages or processing frameworks. Amazon Kinesis Analytics enables you
+-- to create and run SQL queries on streaming data so that you can gain
+-- actionable insights and respond to your business and customer needs
+-- promptly. Amazon Kinesis Analytics takes care of everything required to
+-- run your queries continuously and scales automatically to match the
+-- volume and throughput rate of your incoming data. With Amazon Kinesis
+-- Analytics, you only pay for the resources your queries consume. There is
+-- no minimum fee or setup cost.
+module Amazonka.KinesisAnalytics
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** CodeValidationException
+    _CodeValidationException,
+
+    -- ** ConcurrentModificationException
+    _ConcurrentModificationException,
+
+    -- ** InvalidApplicationConfigurationException
+    _InvalidApplicationConfigurationException,
+
+    -- ** InvalidArgumentException
+    _InvalidArgumentException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** ResourceInUseException
+    _ResourceInUseException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ResourceProvisionedThroughputExceededException
+    _ResourceProvisionedThroughputExceededException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** TooManyTagsException
+    _TooManyTagsException,
+
+    -- ** UnableToDetectSchemaException
+    _UnableToDetectSchemaException,
+
+    -- ** UnsupportedOperationException
+    _UnsupportedOperationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AddApplicationCloudWatchLoggingOption
+    AddApplicationCloudWatchLoggingOption (AddApplicationCloudWatchLoggingOption'),
+    newAddApplicationCloudWatchLoggingOption,
+    AddApplicationCloudWatchLoggingOptionResponse (AddApplicationCloudWatchLoggingOptionResponse'),
+    newAddApplicationCloudWatchLoggingOptionResponse,
+
+    -- ** AddApplicationInput
+    AddApplicationInput (AddApplicationInput'),
+    newAddApplicationInput,
+    AddApplicationInputResponse (AddApplicationInputResponse'),
+    newAddApplicationInputResponse,
+
+    -- ** AddApplicationInputProcessingConfiguration
+    AddApplicationInputProcessingConfiguration (AddApplicationInputProcessingConfiguration'),
+    newAddApplicationInputProcessingConfiguration,
+    AddApplicationInputProcessingConfigurationResponse (AddApplicationInputProcessingConfigurationResponse'),
+    newAddApplicationInputProcessingConfigurationResponse,
+
+    -- ** AddApplicationOutput
+    AddApplicationOutput (AddApplicationOutput'),
+    newAddApplicationOutput,
+    AddApplicationOutputResponse (AddApplicationOutputResponse'),
+    newAddApplicationOutputResponse,
+
+    -- ** AddApplicationReferenceDataSource
+    AddApplicationReferenceDataSource (AddApplicationReferenceDataSource'),
+    newAddApplicationReferenceDataSource,
+    AddApplicationReferenceDataSourceResponse (AddApplicationReferenceDataSourceResponse'),
+    newAddApplicationReferenceDataSourceResponse,
+
+    -- ** CreateApplication
+    CreateApplication (CreateApplication'),
+    newCreateApplication,
+    CreateApplicationResponse (CreateApplicationResponse'),
+    newCreateApplicationResponse,
+
+    -- ** DeleteApplication
+    DeleteApplication (DeleteApplication'),
+    newDeleteApplication,
+    DeleteApplicationResponse (DeleteApplicationResponse'),
+    newDeleteApplicationResponse,
+
+    -- ** DeleteApplicationCloudWatchLoggingOption
+    DeleteApplicationCloudWatchLoggingOption (DeleteApplicationCloudWatchLoggingOption'),
+    newDeleteApplicationCloudWatchLoggingOption,
+    DeleteApplicationCloudWatchLoggingOptionResponse (DeleteApplicationCloudWatchLoggingOptionResponse'),
+    newDeleteApplicationCloudWatchLoggingOptionResponse,
+
+    -- ** DeleteApplicationInputProcessingConfiguration
+    DeleteApplicationInputProcessingConfiguration (DeleteApplicationInputProcessingConfiguration'),
+    newDeleteApplicationInputProcessingConfiguration,
+    DeleteApplicationInputProcessingConfigurationResponse (DeleteApplicationInputProcessingConfigurationResponse'),
+    newDeleteApplicationInputProcessingConfigurationResponse,
+
+    -- ** DeleteApplicationOutput
+    DeleteApplicationOutput (DeleteApplicationOutput'),
+    newDeleteApplicationOutput,
+    DeleteApplicationOutputResponse (DeleteApplicationOutputResponse'),
+    newDeleteApplicationOutputResponse,
+
+    -- ** DeleteApplicationReferenceDataSource
+    DeleteApplicationReferenceDataSource (DeleteApplicationReferenceDataSource'),
+    newDeleteApplicationReferenceDataSource,
+    DeleteApplicationReferenceDataSourceResponse (DeleteApplicationReferenceDataSourceResponse'),
+    newDeleteApplicationReferenceDataSourceResponse,
+
+    -- ** DescribeApplication
+    DescribeApplication (DescribeApplication'),
+    newDescribeApplication,
+    DescribeApplicationResponse (DescribeApplicationResponse'),
+    newDescribeApplicationResponse,
+
+    -- ** DiscoverInputSchema
+    DiscoverInputSchema (DiscoverInputSchema'),
+    newDiscoverInputSchema,
+    DiscoverInputSchemaResponse (DiscoverInputSchemaResponse'),
+    newDiscoverInputSchemaResponse,
+
+    -- ** ListApplications
+    ListApplications (ListApplications'),
+    newListApplications,
+    ListApplicationsResponse (ListApplicationsResponse'),
+    newListApplicationsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartApplication
+    StartApplication (StartApplication'),
+    newStartApplication,
+    StartApplicationResponse (StartApplicationResponse'),
+    newStartApplicationResponse,
+
+    -- ** StopApplication
+    StopApplication (StopApplication'),
+    newStopApplication,
+    StopApplicationResponse (StopApplicationResponse'),
+    newStopApplicationResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateApplication
+    UpdateApplication (UpdateApplication'),
+    newUpdateApplication,
+    UpdateApplicationResponse (UpdateApplicationResponse'),
+    newUpdateApplicationResponse,
+
+    -- * Types
+
+    -- ** ApplicationStatus
+    ApplicationStatus (..),
+
+    -- ** InputStartingPosition
+    InputStartingPosition (..),
+
+    -- ** RecordFormatType
+    RecordFormatType (..),
+
+    -- ** ApplicationDetail
+    ApplicationDetail (ApplicationDetail'),
+    newApplicationDetail,
+
+    -- ** ApplicationSummary
+    ApplicationSummary (ApplicationSummary'),
+    newApplicationSummary,
+
+    -- ** ApplicationUpdate
+    ApplicationUpdate (ApplicationUpdate'),
+    newApplicationUpdate,
+
+    -- ** CSVMappingParameters
+    CSVMappingParameters (CSVMappingParameters'),
+    newCSVMappingParameters,
+
+    -- ** CloudWatchLoggingOption
+    CloudWatchLoggingOption (CloudWatchLoggingOption'),
+    newCloudWatchLoggingOption,
+
+    -- ** CloudWatchLoggingOptionDescription
+    CloudWatchLoggingOptionDescription (CloudWatchLoggingOptionDescription'),
+    newCloudWatchLoggingOptionDescription,
+
+    -- ** CloudWatchLoggingOptionUpdate
+    CloudWatchLoggingOptionUpdate (CloudWatchLoggingOptionUpdate'),
+    newCloudWatchLoggingOptionUpdate,
+
+    -- ** DestinationSchema
+    DestinationSchema (DestinationSchema'),
+    newDestinationSchema,
+
+    -- ** Input
+    Input (Input'),
+    newInput,
+
+    -- ** InputConfiguration
+    InputConfiguration (InputConfiguration'),
+    newInputConfiguration,
+
+    -- ** InputDescription
+    InputDescription (InputDescription'),
+    newInputDescription,
+
+    -- ** InputLambdaProcessor
+    InputLambdaProcessor (InputLambdaProcessor'),
+    newInputLambdaProcessor,
+
+    -- ** InputLambdaProcessorDescription
+    InputLambdaProcessorDescription (InputLambdaProcessorDescription'),
+    newInputLambdaProcessorDescription,
+
+    -- ** InputLambdaProcessorUpdate
+    InputLambdaProcessorUpdate (InputLambdaProcessorUpdate'),
+    newInputLambdaProcessorUpdate,
+
+    -- ** InputParallelism
+    InputParallelism (InputParallelism'),
+    newInputParallelism,
+
+    -- ** InputParallelismUpdate
+    InputParallelismUpdate (InputParallelismUpdate'),
+    newInputParallelismUpdate,
+
+    -- ** InputProcessingConfiguration
+    InputProcessingConfiguration (InputProcessingConfiguration'),
+    newInputProcessingConfiguration,
+
+    -- ** InputProcessingConfigurationDescription
+    InputProcessingConfigurationDescription (InputProcessingConfigurationDescription'),
+    newInputProcessingConfigurationDescription,
+
+    -- ** InputProcessingConfigurationUpdate
+    InputProcessingConfigurationUpdate (InputProcessingConfigurationUpdate'),
+    newInputProcessingConfigurationUpdate,
+
+    -- ** InputSchemaUpdate
+    InputSchemaUpdate (InputSchemaUpdate'),
+    newInputSchemaUpdate,
+
+    -- ** InputStartingPositionConfiguration
+    InputStartingPositionConfiguration (InputStartingPositionConfiguration'),
+    newInputStartingPositionConfiguration,
+
+    -- ** InputUpdate
+    InputUpdate (InputUpdate'),
+    newInputUpdate,
+
+    -- ** JSONMappingParameters
+    JSONMappingParameters (JSONMappingParameters'),
+    newJSONMappingParameters,
+
+    -- ** KinesisFirehoseInput
+    KinesisFirehoseInput (KinesisFirehoseInput'),
+    newKinesisFirehoseInput,
+
+    -- ** KinesisFirehoseInputDescription
+    KinesisFirehoseInputDescription (KinesisFirehoseInputDescription'),
+    newKinesisFirehoseInputDescription,
+
+    -- ** KinesisFirehoseInputUpdate
+    KinesisFirehoseInputUpdate (KinesisFirehoseInputUpdate'),
+    newKinesisFirehoseInputUpdate,
+
+    -- ** KinesisFirehoseOutput
+    KinesisFirehoseOutput (KinesisFirehoseOutput'),
+    newKinesisFirehoseOutput,
+
+    -- ** KinesisFirehoseOutputDescription
+    KinesisFirehoseOutputDescription (KinesisFirehoseOutputDescription'),
+    newKinesisFirehoseOutputDescription,
+
+    -- ** KinesisFirehoseOutputUpdate
+    KinesisFirehoseOutputUpdate (KinesisFirehoseOutputUpdate'),
+    newKinesisFirehoseOutputUpdate,
+
+    -- ** KinesisStreamsInput
+    KinesisStreamsInput (KinesisStreamsInput'),
+    newKinesisStreamsInput,
+
+    -- ** KinesisStreamsInputDescription
+    KinesisStreamsInputDescription (KinesisStreamsInputDescription'),
+    newKinesisStreamsInputDescription,
+
+    -- ** KinesisStreamsInputUpdate
+    KinesisStreamsInputUpdate (KinesisStreamsInputUpdate'),
+    newKinesisStreamsInputUpdate,
+
+    -- ** KinesisStreamsOutput
+    KinesisStreamsOutput (KinesisStreamsOutput'),
+    newKinesisStreamsOutput,
+
+    -- ** KinesisStreamsOutputDescription
+    KinesisStreamsOutputDescription (KinesisStreamsOutputDescription'),
+    newKinesisStreamsOutputDescription,
+
+    -- ** KinesisStreamsOutputUpdate
+    KinesisStreamsOutputUpdate (KinesisStreamsOutputUpdate'),
+    newKinesisStreamsOutputUpdate,
+
+    -- ** LambdaOutput
+    LambdaOutput (LambdaOutput'),
+    newLambdaOutput,
+
+    -- ** LambdaOutputDescription
+    LambdaOutputDescription (LambdaOutputDescription'),
+    newLambdaOutputDescription,
+
+    -- ** LambdaOutputUpdate
+    LambdaOutputUpdate (LambdaOutputUpdate'),
+    newLambdaOutputUpdate,
+
+    -- ** MappingParameters
+    MappingParameters (MappingParameters'),
+    newMappingParameters,
+
+    -- ** Output
+    Output (Output'),
+    newOutput,
+
+    -- ** OutputDescription
+    OutputDescription (OutputDescription'),
+    newOutputDescription,
+
+    -- ** OutputUpdate
+    OutputUpdate (OutputUpdate'),
+    newOutputUpdate,
+
+    -- ** RecordColumn
+    RecordColumn (RecordColumn'),
+    newRecordColumn,
+
+    -- ** RecordFormat
+    RecordFormat (RecordFormat'),
+    newRecordFormat,
+
+    -- ** ReferenceDataSource
+    ReferenceDataSource (ReferenceDataSource'),
+    newReferenceDataSource,
+
+    -- ** ReferenceDataSourceDescription
+    ReferenceDataSourceDescription (ReferenceDataSourceDescription'),
+    newReferenceDataSourceDescription,
+
+    -- ** ReferenceDataSourceUpdate
+    ReferenceDataSourceUpdate (ReferenceDataSourceUpdate'),
+    newReferenceDataSourceUpdate,
+
+    -- ** S3Configuration
+    S3Configuration (S3Configuration'),
+    newS3Configuration,
+
+    -- ** S3ReferenceDataSource
+    S3ReferenceDataSource (S3ReferenceDataSource'),
+    newS3ReferenceDataSource,
+
+    -- ** S3ReferenceDataSourceDescription
+    S3ReferenceDataSourceDescription (S3ReferenceDataSourceDescription'),
+    newS3ReferenceDataSourceDescription,
+
+    -- ** S3ReferenceDataSourceUpdate
+    S3ReferenceDataSourceUpdate (S3ReferenceDataSourceUpdate'),
+    newS3ReferenceDataSourceUpdate,
+
+    -- ** SourceSchema
+    SourceSchema (SourceSchema'),
+    newSourceSchema,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+  )
+where
+
+import Amazonka.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.AddApplicationInput
+import Amazonka.KinesisAnalytics.AddApplicationInputProcessingConfiguration
+import Amazonka.KinesisAnalytics.AddApplicationOutput
+import Amazonka.KinesisAnalytics.AddApplicationReferenceDataSource
+import Amazonka.KinesisAnalytics.CreateApplication
+import Amazonka.KinesisAnalytics.DeleteApplication
+import Amazonka.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
+import Amazonka.KinesisAnalytics.DeleteApplicationOutput
+import Amazonka.KinesisAnalytics.DeleteApplicationReferenceDataSource
+import Amazonka.KinesisAnalytics.DescribeApplication
+import Amazonka.KinesisAnalytics.DiscoverInputSchema
+import Amazonka.KinesisAnalytics.Lens
+import Amazonka.KinesisAnalytics.ListApplications
+import Amazonka.KinesisAnalytics.ListTagsForResource
+import Amazonka.KinesisAnalytics.StartApplication
+import Amazonka.KinesisAnalytics.StopApplication
+import Amazonka.KinesisAnalytics.TagResource
+import Amazonka.KinesisAnalytics.Types
+import Amazonka.KinesisAnalytics.UntagResource
+import Amazonka.KinesisAnalytics.UpdateApplication
+import Amazonka.KinesisAnalytics.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 'KinesisAnalytics'.
+
+-- $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/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs b/gen/Amazonka/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Adds a CloudWatch log stream to monitor application configuration
+-- errors. For more information about using CloudWatch log streams with
+-- Amazon Kinesis Analytics applications, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+module Amazonka.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
+  ( -- * Creating a Request
+    AddApplicationCloudWatchLoggingOption (..),
+    newAddApplicationCloudWatchLoggingOption,
+
+    -- * Request Lenses
+    addApplicationCloudWatchLoggingOption_applicationName,
+    addApplicationCloudWatchLoggingOption_currentApplicationVersionId,
+    addApplicationCloudWatchLoggingOption_cloudWatchLoggingOption,
+
+    -- * Destructuring the Response
+    AddApplicationCloudWatchLoggingOptionResponse (..),
+    newAddApplicationCloudWatchLoggingOptionResponse,
+
+    -- * Response Lenses
+    addApplicationCloudWatchLoggingOptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAddApplicationCloudWatchLoggingOption' smart constructor.
+data AddApplicationCloudWatchLoggingOption = AddApplicationCloudWatchLoggingOption'
+  { -- | The Kinesis Analytics application name.
+    applicationName :: Prelude.Text,
+    -- | The version ID of the Kinesis Analytics application.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | Provides the CloudWatch log stream Amazon Resource Name (ARN) and the
+    -- IAM role ARN. Note: To write application messages to CloudWatch, the IAM
+    -- role that is used must have the @PutLogEvents@ policy action enabled.
+    cloudWatchLoggingOption :: CloudWatchLoggingOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationCloudWatchLoggingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'addApplicationCloudWatchLoggingOption_applicationName' - The Kinesis Analytics application name.
+--
+-- 'currentApplicationVersionId', 'addApplicationCloudWatchLoggingOption_currentApplicationVersionId' - The version ID of the Kinesis Analytics application.
+--
+-- 'cloudWatchLoggingOption', 'addApplicationCloudWatchLoggingOption_cloudWatchLoggingOption' - Provides the CloudWatch log stream Amazon Resource Name (ARN) and the
+-- IAM role ARN. Note: To write application messages to CloudWatch, the IAM
+-- role that is used must have the @PutLogEvents@ policy action enabled.
+newAddApplicationCloudWatchLoggingOption ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'cloudWatchLoggingOption'
+  CloudWatchLoggingOption ->
+  AddApplicationCloudWatchLoggingOption
+newAddApplicationCloudWatchLoggingOption
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pCloudWatchLoggingOption_ =
+    AddApplicationCloudWatchLoggingOption'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        cloudWatchLoggingOption =
+          pCloudWatchLoggingOption_
+      }
+
+-- | The Kinesis Analytics application name.
+addApplicationCloudWatchLoggingOption_applicationName :: Lens.Lens' AddApplicationCloudWatchLoggingOption Prelude.Text
+addApplicationCloudWatchLoggingOption_applicationName = Lens.lens (\AddApplicationCloudWatchLoggingOption' {applicationName} -> applicationName) (\s@AddApplicationCloudWatchLoggingOption' {} a -> s {applicationName = a} :: AddApplicationCloudWatchLoggingOption)
+
+-- | The version ID of the Kinesis Analytics application.
+addApplicationCloudWatchLoggingOption_currentApplicationVersionId :: Lens.Lens' AddApplicationCloudWatchLoggingOption Prelude.Natural
+addApplicationCloudWatchLoggingOption_currentApplicationVersionId = Lens.lens (\AddApplicationCloudWatchLoggingOption' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@AddApplicationCloudWatchLoggingOption' {} a -> s {currentApplicationVersionId = a} :: AddApplicationCloudWatchLoggingOption)
+
+-- | Provides the CloudWatch log stream Amazon Resource Name (ARN) and the
+-- IAM role ARN. Note: To write application messages to CloudWatch, the IAM
+-- role that is used must have the @PutLogEvents@ policy action enabled.
+addApplicationCloudWatchLoggingOption_cloudWatchLoggingOption :: Lens.Lens' AddApplicationCloudWatchLoggingOption CloudWatchLoggingOption
+addApplicationCloudWatchLoggingOption_cloudWatchLoggingOption = Lens.lens (\AddApplicationCloudWatchLoggingOption' {cloudWatchLoggingOption} -> cloudWatchLoggingOption) (\s@AddApplicationCloudWatchLoggingOption' {} a -> s {cloudWatchLoggingOption = a} :: AddApplicationCloudWatchLoggingOption)
+
+instance
+  Core.AWSRequest
+    AddApplicationCloudWatchLoggingOption
+  where
+  type
+    AWSResponse
+      AddApplicationCloudWatchLoggingOption =
+      AddApplicationCloudWatchLoggingOptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AddApplicationCloudWatchLoggingOptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AddApplicationCloudWatchLoggingOption
+  where
+  hashWithSalt
+    _salt
+    AddApplicationCloudWatchLoggingOption' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` cloudWatchLoggingOption
+
+instance
+  Prelude.NFData
+    AddApplicationCloudWatchLoggingOption
+  where
+  rnf AddApplicationCloudWatchLoggingOption' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOption
+
+instance
+  Data.ToHeaders
+    AddApplicationCloudWatchLoggingOption
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.AddApplicationCloudWatchLoggingOption" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    AddApplicationCloudWatchLoggingOption
+  where
+  toJSON AddApplicationCloudWatchLoggingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just
+              ( "CloudWatchLoggingOption"
+                  Data..= cloudWatchLoggingOption
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    AddApplicationCloudWatchLoggingOption
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    AddApplicationCloudWatchLoggingOption
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAddApplicationCloudWatchLoggingOptionResponse' smart constructor.
+data AddApplicationCloudWatchLoggingOptionResponse = AddApplicationCloudWatchLoggingOptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationCloudWatchLoggingOptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addApplicationCloudWatchLoggingOptionResponse_httpStatus' - The response's http status code.
+newAddApplicationCloudWatchLoggingOptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddApplicationCloudWatchLoggingOptionResponse
+newAddApplicationCloudWatchLoggingOptionResponse
+  pHttpStatus_ =
+    AddApplicationCloudWatchLoggingOptionResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+addApplicationCloudWatchLoggingOptionResponse_httpStatus :: Lens.Lens' AddApplicationCloudWatchLoggingOptionResponse Prelude.Int
+addApplicationCloudWatchLoggingOptionResponse_httpStatus = Lens.lens (\AddApplicationCloudWatchLoggingOptionResponse' {httpStatus} -> httpStatus) (\s@AddApplicationCloudWatchLoggingOptionResponse' {} a -> s {httpStatus = a} :: AddApplicationCloudWatchLoggingOptionResponse)
+
+instance
+  Prelude.NFData
+    AddApplicationCloudWatchLoggingOptionResponse
+  where
+  rnf
+    AddApplicationCloudWatchLoggingOptionResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/AddApplicationInput.hs b/gen/Amazonka/KinesisAnalytics/AddApplicationInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/AddApplicationInput.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.AddApplicationInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Adds a streaming source to your Amazon Kinesis application. For
+-- conceptual information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- You can add a streaming source either when you create an application or
+-- you can use this operation to add a streaming source after you create an
+-- application. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_CreateApplication.html CreateApplication>.
+--
+-- Any configuration update, including adding a streaming source using this
+-- operation, results in a new version of the application. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to find the current application version.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:AddApplicationInput@ action.
+module Amazonka.KinesisAnalytics.AddApplicationInput
+  ( -- * Creating a Request
+    AddApplicationInput (..),
+    newAddApplicationInput,
+
+    -- * Request Lenses
+    addApplicationInput_applicationName,
+    addApplicationInput_currentApplicationVersionId,
+    addApplicationInput_input,
+
+    -- * Destructuring the Response
+    AddApplicationInputResponse (..),
+    newAddApplicationInputResponse,
+
+    -- * Response Lenses
+    addApplicationInputResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newAddApplicationInput' smart constructor.
+data AddApplicationInput = AddApplicationInput'
+  { -- | Name of your existing Amazon Kinesis Analytics application to which you
+    -- want to add the streaming source.
+    applicationName :: Prelude.Text,
+    -- | Current version of your Amazon Kinesis Analytics application. You can
+    -- use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to find the current application version.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_Input.html Input>
+    -- to add.
+    input :: Input
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'addApplicationInput_applicationName' - Name of your existing Amazon Kinesis Analytics application to which you
+-- want to add the streaming source.
+--
+-- 'currentApplicationVersionId', 'addApplicationInput_currentApplicationVersionId' - Current version of your Amazon Kinesis Analytics application. You can
+-- use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to find the current application version.
+--
+-- 'input', 'addApplicationInput_input' - The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_Input.html Input>
+-- to add.
+newAddApplicationInput ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'input'
+  Input ->
+  AddApplicationInput
+newAddApplicationInput
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pInput_ =
+    AddApplicationInput'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        input = pInput_
+      }
+
+-- | Name of your existing Amazon Kinesis Analytics application to which you
+-- want to add the streaming source.
+addApplicationInput_applicationName :: Lens.Lens' AddApplicationInput Prelude.Text
+addApplicationInput_applicationName = Lens.lens (\AddApplicationInput' {applicationName} -> applicationName) (\s@AddApplicationInput' {} a -> s {applicationName = a} :: AddApplicationInput)
+
+-- | Current version of your Amazon Kinesis Analytics application. You can
+-- use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to find the current application version.
+addApplicationInput_currentApplicationVersionId :: Lens.Lens' AddApplicationInput Prelude.Natural
+addApplicationInput_currentApplicationVersionId = Lens.lens (\AddApplicationInput' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@AddApplicationInput' {} a -> s {currentApplicationVersionId = a} :: AddApplicationInput)
+
+-- | The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_Input.html Input>
+-- to add.
+addApplicationInput_input :: Lens.Lens' AddApplicationInput Input
+addApplicationInput_input = Lens.lens (\AddApplicationInput' {input} -> input) (\s@AddApplicationInput' {} a -> s {input = a} :: AddApplicationInput)
+
+instance Core.AWSRequest AddApplicationInput where
+  type
+    AWSResponse AddApplicationInput =
+      AddApplicationInputResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AddApplicationInputResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AddApplicationInput where
+  hashWithSalt _salt AddApplicationInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` currentApplicationVersionId
+      `Prelude.hashWithSalt` input
+
+instance Prelude.NFData AddApplicationInput where
+  rnf AddApplicationInput' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf input
+
+instance Data.ToHeaders AddApplicationInput where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.AddApplicationInput" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AddApplicationInput where
+  toJSON AddApplicationInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just ("Input" Data..= input)
+          ]
+      )
+
+instance Data.ToPath AddApplicationInput where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AddApplicationInput where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newAddApplicationInputResponse' smart constructor.
+data AddApplicationInputResponse = AddApplicationInputResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationInputResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addApplicationInputResponse_httpStatus' - The response's http status code.
+newAddApplicationInputResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddApplicationInputResponse
+newAddApplicationInputResponse pHttpStatus_ =
+  AddApplicationInputResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+addApplicationInputResponse_httpStatus :: Lens.Lens' AddApplicationInputResponse Prelude.Int
+addApplicationInputResponse_httpStatus = Lens.lens (\AddApplicationInputResponse' {httpStatus} -> httpStatus) (\s@AddApplicationInputResponse' {} a -> s {httpStatus = a} :: AddApplicationInputResponse)
+
+instance Prelude.NFData AddApplicationInputResponse where
+  rnf AddApplicationInputResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs b/gen/Amazonka/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.AddApplicationInputProcessingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Adds an
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- to an application. An input processor preprocesses records on the input
+-- stream before the application\'s SQL code executes. Currently, the only
+-- input processor available is
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda>.
+module Amazonka.KinesisAnalytics.AddApplicationInputProcessingConfiguration
+  ( -- * Creating a Request
+    AddApplicationInputProcessingConfiguration (..),
+    newAddApplicationInputProcessingConfiguration,
+
+    -- * Request Lenses
+    addApplicationInputProcessingConfiguration_applicationName,
+    addApplicationInputProcessingConfiguration_currentApplicationVersionId,
+    addApplicationInputProcessingConfiguration_inputId,
+    addApplicationInputProcessingConfiguration_inputProcessingConfiguration,
+
+    -- * Destructuring the Response
+    AddApplicationInputProcessingConfigurationResponse (..),
+    newAddApplicationInputProcessingConfigurationResponse,
+
+    -- * Response Lenses
+    addApplicationInputProcessingConfigurationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAddApplicationInputProcessingConfiguration' smart constructor.
+data AddApplicationInputProcessingConfiguration = AddApplicationInputProcessingConfiguration'
+  { -- | Name of the application to which you want to add the input processing
+    -- configuration.
+    applicationName :: Prelude.Text,
+    -- | Version of the application to which you want to add the input processing
+    -- configuration. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the current application version. If the version
+    -- specified is not the current version, the
+    -- @ConcurrentModificationException@ is returned.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The ID of the input configuration to add the input processing
+    -- configuration to. You can get a list of the input IDs for an application
+    -- using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation.
+    inputId :: Prelude.Text,
+    -- | The
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+    -- to add to the application.
+    inputProcessingConfiguration :: InputProcessingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationInputProcessingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'addApplicationInputProcessingConfiguration_applicationName' - Name of the application to which you want to add the input processing
+-- configuration.
+--
+-- 'currentApplicationVersionId', 'addApplicationInputProcessingConfiguration_currentApplicationVersionId' - Version of the application to which you want to add the input processing
+-- configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+--
+-- 'inputId', 'addApplicationInputProcessingConfiguration_inputId' - The ID of the input configuration to add the input processing
+-- configuration to. You can get a list of the input IDs for an application
+-- using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+--
+-- 'inputProcessingConfiguration', 'addApplicationInputProcessingConfiguration_inputProcessingConfiguration' - The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- to add to the application.
+newAddApplicationInputProcessingConfiguration ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'inputId'
+  Prelude.Text ->
+  -- | 'inputProcessingConfiguration'
+  InputProcessingConfiguration ->
+  AddApplicationInputProcessingConfiguration
+newAddApplicationInputProcessingConfiguration
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pInputId_
+  pInputProcessingConfiguration_ =
+    AddApplicationInputProcessingConfiguration'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        inputId = pInputId_,
+        inputProcessingConfiguration =
+          pInputProcessingConfiguration_
+      }
+
+-- | Name of the application to which you want to add the input processing
+-- configuration.
+addApplicationInputProcessingConfiguration_applicationName :: Lens.Lens' AddApplicationInputProcessingConfiguration Prelude.Text
+addApplicationInputProcessingConfiguration_applicationName = Lens.lens (\AddApplicationInputProcessingConfiguration' {applicationName} -> applicationName) (\s@AddApplicationInputProcessingConfiguration' {} a -> s {applicationName = a} :: AddApplicationInputProcessingConfiguration)
+
+-- | Version of the application to which you want to add the input processing
+-- configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+addApplicationInputProcessingConfiguration_currentApplicationVersionId :: Lens.Lens' AddApplicationInputProcessingConfiguration Prelude.Natural
+addApplicationInputProcessingConfiguration_currentApplicationVersionId = Lens.lens (\AddApplicationInputProcessingConfiguration' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@AddApplicationInputProcessingConfiguration' {} a -> s {currentApplicationVersionId = a} :: AddApplicationInputProcessingConfiguration)
+
+-- | The ID of the input configuration to add the input processing
+-- configuration to. You can get a list of the input IDs for an application
+-- using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+addApplicationInputProcessingConfiguration_inputId :: Lens.Lens' AddApplicationInputProcessingConfiguration Prelude.Text
+addApplicationInputProcessingConfiguration_inputId = Lens.lens (\AddApplicationInputProcessingConfiguration' {inputId} -> inputId) (\s@AddApplicationInputProcessingConfiguration' {} a -> s {inputId = a} :: AddApplicationInputProcessingConfiguration)
+
+-- | The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- to add to the application.
+addApplicationInputProcessingConfiguration_inputProcessingConfiguration :: Lens.Lens' AddApplicationInputProcessingConfiguration InputProcessingConfiguration
+addApplicationInputProcessingConfiguration_inputProcessingConfiguration = Lens.lens (\AddApplicationInputProcessingConfiguration' {inputProcessingConfiguration} -> inputProcessingConfiguration) (\s@AddApplicationInputProcessingConfiguration' {} a -> s {inputProcessingConfiguration = a} :: AddApplicationInputProcessingConfiguration)
+
+instance
+  Core.AWSRequest
+    AddApplicationInputProcessingConfiguration
+  where
+  type
+    AWSResponse
+      AddApplicationInputProcessingConfiguration =
+      AddApplicationInputProcessingConfigurationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AddApplicationInputProcessingConfigurationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AddApplicationInputProcessingConfiguration
+  where
+  hashWithSalt
+    _salt
+    AddApplicationInputProcessingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` inputId
+        `Prelude.hashWithSalt` inputProcessingConfiguration
+
+instance
+  Prelude.NFData
+    AddApplicationInputProcessingConfiguration
+  where
+  rnf AddApplicationInputProcessingConfiguration' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf inputId
+      `Prelude.seq` Prelude.rnf inputProcessingConfiguration
+
+instance
+  Data.ToHeaders
+    AddApplicationInputProcessingConfiguration
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.AddApplicationInputProcessingConfiguration" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    AddApplicationInputProcessingConfiguration
+  where
+  toJSON
+    AddApplicationInputProcessingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("ApplicationName" Data..= applicationName),
+              Prelude.Just
+                ( "CurrentApplicationVersionId"
+                    Data..= currentApplicationVersionId
+                ),
+              Prelude.Just ("InputId" Data..= inputId),
+              Prelude.Just
+                ( "InputProcessingConfiguration"
+                    Data..= inputProcessingConfiguration
+                )
+            ]
+        )
+
+instance
+  Data.ToPath
+    AddApplicationInputProcessingConfiguration
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    AddApplicationInputProcessingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAddApplicationInputProcessingConfigurationResponse' smart constructor.
+data AddApplicationInputProcessingConfigurationResponse = AddApplicationInputProcessingConfigurationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationInputProcessingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addApplicationInputProcessingConfigurationResponse_httpStatus' - The response's http status code.
+newAddApplicationInputProcessingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddApplicationInputProcessingConfigurationResponse
+newAddApplicationInputProcessingConfigurationResponse
+  pHttpStatus_ =
+    AddApplicationInputProcessingConfigurationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+addApplicationInputProcessingConfigurationResponse_httpStatus :: Lens.Lens' AddApplicationInputProcessingConfigurationResponse Prelude.Int
+addApplicationInputProcessingConfigurationResponse_httpStatus = Lens.lens (\AddApplicationInputProcessingConfigurationResponse' {httpStatus} -> httpStatus) (\s@AddApplicationInputProcessingConfigurationResponse' {} a -> s {httpStatus = a} :: AddApplicationInputProcessingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    AddApplicationInputProcessingConfigurationResponse
+  where
+  rnf
+    AddApplicationInputProcessingConfigurationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/AddApplicationOutput.hs b/gen/Amazonka/KinesisAnalytics/AddApplicationOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/AddApplicationOutput.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.AddApplicationOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Adds an external destination to your Amazon Kinesis Analytics
+-- application.
+--
+-- If you want Amazon Kinesis Analytics to deliver data from an
+-- in-application stream within your application to an external destination
+-- (such as an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery
+-- stream, or an AWS Lambda function), you add the relevant configuration
+-- to your application using this operation. You can configure one or more
+-- outputs for your application. Each output configuration maps an
+-- in-application stream and an external destination.
+--
+-- You can use one of the output configurations to deliver data from your
+-- in-application error stream to an external destination so that you can
+-- analyze the errors. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Understanding Application Output (Destination)>.
+--
+-- Any configuration update, including adding a streaming source using this
+-- operation, results in a new version of the application. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to find the current application version.
+--
+-- For the limits on the number of application inputs and outputs you can
+-- configure, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:AddApplicationOutput@ action.
+module Amazonka.KinesisAnalytics.AddApplicationOutput
+  ( -- * Creating a Request
+    AddApplicationOutput (..),
+    newAddApplicationOutput,
+
+    -- * Request Lenses
+    addApplicationOutput_applicationName,
+    addApplicationOutput_currentApplicationVersionId,
+    addApplicationOutput_output,
+
+    -- * Destructuring the Response
+    AddApplicationOutputResponse (..),
+    newAddApplicationOutputResponse,
+
+    -- * Response Lenses
+    addApplicationOutputResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newAddApplicationOutput' smart constructor.
+data AddApplicationOutput = AddApplicationOutput'
+  { -- | Name of the application to which you want to add the output
+    -- configuration.
+    applicationName :: Prelude.Text,
+    -- | Version of the application to which you want to add the output
+    -- configuration. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the current application version. If the version
+    -- specified is not the current version, the
+    -- @ConcurrentModificationException@ is returned.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | An array of objects, each describing one output configuration. In the
+    -- output configuration, you specify the name of an in-application stream,
+    -- a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis
+    -- Firehose delivery stream, or an AWS Lambda function), and record the
+    -- formation to use when writing to the destination.
+    output :: Output
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'addApplicationOutput_applicationName' - Name of the application to which you want to add the output
+-- configuration.
+--
+-- 'currentApplicationVersionId', 'addApplicationOutput_currentApplicationVersionId' - Version of the application to which you want to add the output
+-- configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+--
+-- 'output', 'addApplicationOutput_output' - An array of objects, each describing one output configuration. In the
+-- output configuration, you specify the name of an in-application stream,
+-- a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis
+-- Firehose delivery stream, or an AWS Lambda function), and record the
+-- formation to use when writing to the destination.
+newAddApplicationOutput ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'output'
+  Output ->
+  AddApplicationOutput
+newAddApplicationOutput
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pOutput_ =
+    AddApplicationOutput'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        output = pOutput_
+      }
+
+-- | Name of the application to which you want to add the output
+-- configuration.
+addApplicationOutput_applicationName :: Lens.Lens' AddApplicationOutput Prelude.Text
+addApplicationOutput_applicationName = Lens.lens (\AddApplicationOutput' {applicationName} -> applicationName) (\s@AddApplicationOutput' {} a -> s {applicationName = a} :: AddApplicationOutput)
+
+-- | Version of the application to which you want to add the output
+-- configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+addApplicationOutput_currentApplicationVersionId :: Lens.Lens' AddApplicationOutput Prelude.Natural
+addApplicationOutput_currentApplicationVersionId = Lens.lens (\AddApplicationOutput' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@AddApplicationOutput' {} a -> s {currentApplicationVersionId = a} :: AddApplicationOutput)
+
+-- | An array of objects, each describing one output configuration. In the
+-- output configuration, you specify the name of an in-application stream,
+-- a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis
+-- Firehose delivery stream, or an AWS Lambda function), and record the
+-- formation to use when writing to the destination.
+addApplicationOutput_output :: Lens.Lens' AddApplicationOutput Output
+addApplicationOutput_output = Lens.lens (\AddApplicationOutput' {output} -> output) (\s@AddApplicationOutput' {} a -> s {output = a} :: AddApplicationOutput)
+
+instance Core.AWSRequest AddApplicationOutput where
+  type
+    AWSResponse AddApplicationOutput =
+      AddApplicationOutputResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AddApplicationOutputResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AddApplicationOutput where
+  hashWithSalt _salt AddApplicationOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` currentApplicationVersionId
+      `Prelude.hashWithSalt` output
+
+instance Prelude.NFData AddApplicationOutput where
+  rnf AddApplicationOutput' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf output
+
+instance Data.ToHeaders AddApplicationOutput where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.AddApplicationOutput" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AddApplicationOutput where
+  toJSON AddApplicationOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just ("Output" Data..= output)
+          ]
+      )
+
+instance Data.ToPath AddApplicationOutput where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AddApplicationOutput where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newAddApplicationOutputResponse' smart constructor.
+data AddApplicationOutputResponse = AddApplicationOutputResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationOutputResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addApplicationOutputResponse_httpStatus' - The response's http status code.
+newAddApplicationOutputResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddApplicationOutputResponse
+newAddApplicationOutputResponse pHttpStatus_ =
+  AddApplicationOutputResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+addApplicationOutputResponse_httpStatus :: Lens.Lens' AddApplicationOutputResponse Prelude.Int
+addApplicationOutputResponse_httpStatus = Lens.lens (\AddApplicationOutputResponse' {httpStatus} -> httpStatus) (\s@AddApplicationOutputResponse' {} a -> s {httpStatus = a} :: AddApplicationOutputResponse)
+
+instance Prelude.NFData AddApplicationOutputResponse where
+  rnf AddApplicationOutputResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/AddApplicationReferenceDataSource.hs b/gen/Amazonka/KinesisAnalytics/AddApplicationReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/AddApplicationReferenceDataSource.hs
@@ -0,0 +1,286 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.AddApplicationReferenceDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Adds a reference data source to an existing application.
+--
+-- Amazon Kinesis Analytics reads reference data (that is, an Amazon S3
+-- object) and creates an in-application table within your application. In
+-- the request, you provide the source (S3 bucket name and object key
+-- name), name of the in-application table to create, and the necessary
+-- mapping information that describes how data in Amazon S3 object maps to
+-- columns in the resulting in-application table.
+--
+-- For conceptual information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+-- For the limits on data sources you can add to your application, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:AddApplicationOutput@ action.
+module Amazonka.KinesisAnalytics.AddApplicationReferenceDataSource
+  ( -- * Creating a Request
+    AddApplicationReferenceDataSource (..),
+    newAddApplicationReferenceDataSource,
+
+    -- * Request Lenses
+    addApplicationReferenceDataSource_applicationName,
+    addApplicationReferenceDataSource_currentApplicationVersionId,
+    addApplicationReferenceDataSource_referenceDataSource,
+
+    -- * Destructuring the Response
+    AddApplicationReferenceDataSourceResponse (..),
+    newAddApplicationReferenceDataSourceResponse,
+
+    -- * Response Lenses
+    addApplicationReferenceDataSourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newAddApplicationReferenceDataSource' smart constructor.
+data AddApplicationReferenceDataSource = AddApplicationReferenceDataSource'
+  { -- | Name of an existing application.
+    applicationName :: Prelude.Text,
+    -- | Version of the application for which you are adding the reference data
+    -- source. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the current application version. If the version
+    -- specified is not the current version, the
+    -- @ConcurrentModificationException@ is returned.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The reference data source can be an object in your Amazon S3 bucket.
+    -- Amazon Kinesis Analytics reads the object and copies the data into the
+    -- in-application table that is created. You provide an S3 bucket, object
+    -- key name, and the resulting in-application table that is created. You
+    -- must also provide an IAM role with the necessary permissions that Amazon
+    -- Kinesis Analytics can assume to read the object from your S3 bucket on
+    -- your behalf.
+    referenceDataSource :: ReferenceDataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationReferenceDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'addApplicationReferenceDataSource_applicationName' - Name of an existing application.
+--
+-- 'currentApplicationVersionId', 'addApplicationReferenceDataSource_currentApplicationVersionId' - Version of the application for which you are adding the reference data
+-- source. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+--
+-- 'referenceDataSource', 'addApplicationReferenceDataSource_referenceDataSource' - The reference data source can be an object in your Amazon S3 bucket.
+-- Amazon Kinesis Analytics reads the object and copies the data into the
+-- in-application table that is created. You provide an S3 bucket, object
+-- key name, and the resulting in-application table that is created. You
+-- must also provide an IAM role with the necessary permissions that Amazon
+-- Kinesis Analytics can assume to read the object from your S3 bucket on
+-- your behalf.
+newAddApplicationReferenceDataSource ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'referenceDataSource'
+  ReferenceDataSource ->
+  AddApplicationReferenceDataSource
+newAddApplicationReferenceDataSource
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pReferenceDataSource_ =
+    AddApplicationReferenceDataSource'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        referenceDataSource =
+          pReferenceDataSource_
+      }
+
+-- | Name of an existing application.
+addApplicationReferenceDataSource_applicationName :: Lens.Lens' AddApplicationReferenceDataSource Prelude.Text
+addApplicationReferenceDataSource_applicationName = Lens.lens (\AddApplicationReferenceDataSource' {applicationName} -> applicationName) (\s@AddApplicationReferenceDataSource' {} a -> s {applicationName = a} :: AddApplicationReferenceDataSource)
+
+-- | Version of the application for which you are adding the reference data
+-- source. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+addApplicationReferenceDataSource_currentApplicationVersionId :: Lens.Lens' AddApplicationReferenceDataSource Prelude.Natural
+addApplicationReferenceDataSource_currentApplicationVersionId = Lens.lens (\AddApplicationReferenceDataSource' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@AddApplicationReferenceDataSource' {} a -> s {currentApplicationVersionId = a} :: AddApplicationReferenceDataSource)
+
+-- | The reference data source can be an object in your Amazon S3 bucket.
+-- Amazon Kinesis Analytics reads the object and copies the data into the
+-- in-application table that is created. You provide an S3 bucket, object
+-- key name, and the resulting in-application table that is created. You
+-- must also provide an IAM role with the necessary permissions that Amazon
+-- Kinesis Analytics can assume to read the object from your S3 bucket on
+-- your behalf.
+addApplicationReferenceDataSource_referenceDataSource :: Lens.Lens' AddApplicationReferenceDataSource ReferenceDataSource
+addApplicationReferenceDataSource_referenceDataSource = Lens.lens (\AddApplicationReferenceDataSource' {referenceDataSource} -> referenceDataSource) (\s@AddApplicationReferenceDataSource' {} a -> s {referenceDataSource = a} :: AddApplicationReferenceDataSource)
+
+instance
+  Core.AWSRequest
+    AddApplicationReferenceDataSource
+  where
+  type
+    AWSResponse AddApplicationReferenceDataSource =
+      AddApplicationReferenceDataSourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AddApplicationReferenceDataSourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AddApplicationReferenceDataSource
+  where
+  hashWithSalt
+    _salt
+    AddApplicationReferenceDataSource' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` referenceDataSource
+
+instance
+  Prelude.NFData
+    AddApplicationReferenceDataSource
+  where
+  rnf AddApplicationReferenceDataSource' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf referenceDataSource
+
+instance
+  Data.ToHeaders
+    AddApplicationReferenceDataSource
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.AddApplicationReferenceDataSource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    AddApplicationReferenceDataSource
+  where
+  toJSON AddApplicationReferenceDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just
+              ("ReferenceDataSource" Data..= referenceDataSource)
+          ]
+      )
+
+instance
+  Data.ToPath
+    AddApplicationReferenceDataSource
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    AddApplicationReferenceDataSource
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newAddApplicationReferenceDataSourceResponse' smart constructor.
+data AddApplicationReferenceDataSourceResponse = AddApplicationReferenceDataSourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddApplicationReferenceDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addApplicationReferenceDataSourceResponse_httpStatus' - The response's http status code.
+newAddApplicationReferenceDataSourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddApplicationReferenceDataSourceResponse
+newAddApplicationReferenceDataSourceResponse
+  pHttpStatus_ =
+    AddApplicationReferenceDataSourceResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+addApplicationReferenceDataSourceResponse_httpStatus :: Lens.Lens' AddApplicationReferenceDataSourceResponse Prelude.Int
+addApplicationReferenceDataSourceResponse_httpStatus = Lens.lens (\AddApplicationReferenceDataSourceResponse' {httpStatus} -> httpStatus) (\s@AddApplicationReferenceDataSourceResponse' {} a -> s {httpStatus = a} :: AddApplicationReferenceDataSourceResponse)
+
+instance
+  Prelude.NFData
+    AddApplicationReferenceDataSourceResponse
+  where
+  rnf AddApplicationReferenceDataSourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/CreateApplication.hs b/gen/Amazonka/KinesisAnalytics/CreateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/CreateApplication.hs
@@ -0,0 +1,471 @@
+{-# 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.KinesisAnalytics.CreateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Creates an Amazon Kinesis Analytics application. You can configure each
+-- application with one streaming source as input, application code to
+-- process the input, and up to three destinations where you want Amazon
+-- Kinesis Analytics to write the output data from your application. For an
+-- overview, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works.html How it Works>.
+--
+-- In the input configuration, you map the streaming source to an
+-- in-application stream, which you can think of as a constantly updating
+-- table. In the mapping, you must provide a schema for the in-application
+-- stream and map each data column in the in-application stream to a data
+-- element in the streaming source.
+--
+-- Your application code is one or more SQL statements that read input
+-- data, transform it, and generate output. Your application code can
+-- create one or more SQL artifacts like SQL streams or pumps.
+--
+-- In the output configuration, you can configure the application to write
+-- data from in-application streams created in your applications to up to
+-- three destinations.
+--
+-- To read data from your source stream or write data to destination
+-- streams, Amazon Kinesis Analytics needs your permissions. You grant
+-- these permissions by creating IAM roles. This operation requires
+-- permissions to perform the @kinesisanalytics:CreateApplication@ action.
+--
+-- For introductory exercises to create an Amazon Kinesis Analytics
+-- application, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/getting-started.html Getting Started>.
+module Amazonka.KinesisAnalytics.CreateApplication
+  ( -- * Creating a Request
+    CreateApplication (..),
+    newCreateApplication,
+
+    -- * Request Lenses
+    createApplication_applicationCode,
+    createApplication_applicationDescription,
+    createApplication_cloudWatchLoggingOptions,
+    createApplication_inputs,
+    createApplication_outputs,
+    createApplication_tags,
+    createApplication_applicationName,
+
+    -- * Destructuring the Response
+    CreateApplicationResponse (..),
+    newCreateApplicationResponse,
+
+    -- * Response Lenses
+    createApplicationResponse_httpStatus,
+    createApplicationResponse_applicationSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | TBD
+--
+-- /See:/ 'newCreateApplication' smart constructor.
+data CreateApplication = CreateApplication'
+  { -- | One or more SQL statements that read input data, transform it, and
+    -- generate output. For example, you can write a SQL statement that reads
+    -- data from one in-application stream, generates a running average of the
+    -- number of advertisement clicks by vendor, and insert resulting rows in
+    -- another in-application stream using pumps. For more information about
+    -- the typical pattern, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html Application Code>.
+    --
+    -- You can provide such series of SQL statements, where output of one
+    -- statement can be used as the input for the next statement. You store
+    -- intermediate results by creating in-application streams and pumps.
+    --
+    -- Note that the application code must create the streams with names
+    -- specified in the @Outputs@. For example, if your @Outputs@ defines
+    -- output streams named @ExampleOutputStream1@ and @ExampleOutputStream2@,
+    -- then your application code must create these streams.
+    applicationCode :: Prelude.Maybe Prelude.Text,
+    -- | Summary description of the application.
+    applicationDescription :: Prelude.Maybe Prelude.Text,
+    -- | Use this parameter to configure a CloudWatch log stream to monitor
+    -- application configuration errors. For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+    cloudWatchLoggingOptions :: Prelude.Maybe [CloudWatchLoggingOption],
+    -- | Use this parameter to configure the application input.
+    --
+    -- You can configure your application to receive input from a single
+    -- streaming source. In this configuration, you map this streaming source
+    -- to an in-application stream that is created. Your application code can
+    -- then query the in-application stream like a table (you can think of it
+    -- as a constantly updating table).
+    --
+    -- For the streaming source, you provide its Amazon Resource Name (ARN) and
+    -- format of data on the stream (for example, JSON, CSV, etc.). You also
+    -- must provide an IAM role that Amazon Kinesis Analytics can assume to
+    -- read this stream on your behalf.
+    --
+    -- To create the in-application stream, you need to specify a schema to
+    -- transform your data into a schematized version used in SQL. In the
+    -- schema, you provide the necessary mapping of the data elements in the
+    -- streaming source to record columns in the in-app stream.
+    inputs :: Prelude.Maybe [Input],
+    -- | You can configure application output to write data from any of the
+    -- in-application streams to up to three destinations.
+    --
+    -- These destinations can be Amazon Kinesis streams, Amazon Kinesis
+    -- Firehose delivery streams, AWS Lambda destinations, or any combination
+    -- of the three.
+    --
+    -- In the configuration, you specify the in-application stream name, the
+    -- destination stream or Lambda function Amazon Resource Name (ARN), and
+    -- the format to use when writing data. You must also provide an IAM role
+    -- that Amazon Kinesis Analytics can assume to write to the destination
+    -- stream or Lambda function on your behalf.
+    --
+    -- In the output configuration, you also provide the output stream or
+    -- Lambda function ARN. For stream destinations, you provide the format of
+    -- data in the stream (for example, JSON, CSV). You also must provide an
+    -- IAM role that Amazon Kinesis Analytics can assume to write to the stream
+    -- or Lambda function on your behalf.
+    outputs :: Prelude.Maybe [Output],
+    -- | A list of one or more tags to assign to the application. A tag is a
+    -- key-value pair that identifies an application. Note that the maximum
+    -- number of application tags includes system tags. The maximum number of
+    -- user-defined application tags is 50. For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Name of your Amazon Kinesis Analytics application (for example,
+    -- @sample-app@).
+    applicationName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationCode', 'createApplication_applicationCode' - One or more SQL statements that read input data, transform it, and
+-- generate output. For example, you can write a SQL statement that reads
+-- data from one in-application stream, generates a running average of the
+-- number of advertisement clicks by vendor, and insert resulting rows in
+-- another in-application stream using pumps. For more information about
+-- the typical pattern, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html Application Code>.
+--
+-- You can provide such series of SQL statements, where output of one
+-- statement can be used as the input for the next statement. You store
+-- intermediate results by creating in-application streams and pumps.
+--
+-- Note that the application code must create the streams with names
+-- specified in the @Outputs@. For example, if your @Outputs@ defines
+-- output streams named @ExampleOutputStream1@ and @ExampleOutputStream2@,
+-- then your application code must create these streams.
+--
+-- 'applicationDescription', 'createApplication_applicationDescription' - Summary description of the application.
+--
+-- 'cloudWatchLoggingOptions', 'createApplication_cloudWatchLoggingOptions' - Use this parameter to configure a CloudWatch log stream to monitor
+-- application configuration errors. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+--
+-- 'inputs', 'createApplication_inputs' - Use this parameter to configure the application input.
+--
+-- You can configure your application to receive input from a single
+-- streaming source. In this configuration, you map this streaming source
+-- to an in-application stream that is created. Your application code can
+-- then query the in-application stream like a table (you can think of it
+-- as a constantly updating table).
+--
+-- For the streaming source, you provide its Amazon Resource Name (ARN) and
+-- format of data on the stream (for example, JSON, CSV, etc.). You also
+-- must provide an IAM role that Amazon Kinesis Analytics can assume to
+-- read this stream on your behalf.
+--
+-- To create the in-application stream, you need to specify a schema to
+-- transform your data into a schematized version used in SQL. In the
+-- schema, you provide the necessary mapping of the data elements in the
+-- streaming source to record columns in the in-app stream.
+--
+-- 'outputs', 'createApplication_outputs' - You can configure application output to write data from any of the
+-- in-application streams to up to three destinations.
+--
+-- These destinations can be Amazon Kinesis streams, Amazon Kinesis
+-- Firehose delivery streams, AWS Lambda destinations, or any combination
+-- of the three.
+--
+-- In the configuration, you specify the in-application stream name, the
+-- destination stream or Lambda function Amazon Resource Name (ARN), and
+-- the format to use when writing data. You must also provide an IAM role
+-- that Amazon Kinesis Analytics can assume to write to the destination
+-- stream or Lambda function on your behalf.
+--
+-- In the output configuration, you also provide the output stream or
+-- Lambda function ARN. For stream destinations, you provide the format of
+-- data in the stream (for example, JSON, CSV). You also must provide an
+-- IAM role that Amazon Kinesis Analytics can assume to write to the stream
+-- or Lambda function on your behalf.
+--
+-- 'tags', 'createApplication_tags' - A list of one or more tags to assign to the application. A tag is a
+-- key-value pair that identifies an application. Note that the maximum
+-- number of application tags includes system tags. The maximum number of
+-- user-defined application tags is 50. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+--
+-- 'applicationName', 'createApplication_applicationName' - Name of your Amazon Kinesis Analytics application (for example,
+-- @sample-app@).
+newCreateApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  CreateApplication
+newCreateApplication pApplicationName_ =
+  CreateApplication'
+    { applicationCode =
+        Prelude.Nothing,
+      applicationDescription = Prelude.Nothing,
+      cloudWatchLoggingOptions = Prelude.Nothing,
+      inputs = Prelude.Nothing,
+      outputs = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      applicationName = pApplicationName_
+    }
+
+-- | One or more SQL statements that read input data, transform it, and
+-- generate output. For example, you can write a SQL statement that reads
+-- data from one in-application stream, generates a running average of the
+-- number of advertisement clicks by vendor, and insert resulting rows in
+-- another in-application stream using pumps. For more information about
+-- the typical pattern, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html Application Code>.
+--
+-- You can provide such series of SQL statements, where output of one
+-- statement can be used as the input for the next statement. You store
+-- intermediate results by creating in-application streams and pumps.
+--
+-- Note that the application code must create the streams with names
+-- specified in the @Outputs@. For example, if your @Outputs@ defines
+-- output streams named @ExampleOutputStream1@ and @ExampleOutputStream2@,
+-- then your application code must create these streams.
+createApplication_applicationCode :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_applicationCode = Lens.lens (\CreateApplication' {applicationCode} -> applicationCode) (\s@CreateApplication' {} a -> s {applicationCode = a} :: CreateApplication)
+
+-- | Summary description of the application.
+createApplication_applicationDescription :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_applicationDescription = Lens.lens (\CreateApplication' {applicationDescription} -> applicationDescription) (\s@CreateApplication' {} a -> s {applicationDescription = a} :: CreateApplication)
+
+-- | Use this parameter to configure a CloudWatch log stream to monitor
+-- application configuration errors. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+createApplication_cloudWatchLoggingOptions :: Lens.Lens' CreateApplication (Prelude.Maybe [CloudWatchLoggingOption])
+createApplication_cloudWatchLoggingOptions = Lens.lens (\CreateApplication' {cloudWatchLoggingOptions} -> cloudWatchLoggingOptions) (\s@CreateApplication' {} a -> s {cloudWatchLoggingOptions = a} :: CreateApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this parameter to configure the application input.
+--
+-- You can configure your application to receive input from a single
+-- streaming source. In this configuration, you map this streaming source
+-- to an in-application stream that is created. Your application code can
+-- then query the in-application stream like a table (you can think of it
+-- as a constantly updating table).
+--
+-- For the streaming source, you provide its Amazon Resource Name (ARN) and
+-- format of data on the stream (for example, JSON, CSV, etc.). You also
+-- must provide an IAM role that Amazon Kinesis Analytics can assume to
+-- read this stream on your behalf.
+--
+-- To create the in-application stream, you need to specify a schema to
+-- transform your data into a schematized version used in SQL. In the
+-- schema, you provide the necessary mapping of the data elements in the
+-- streaming source to record columns in the in-app stream.
+createApplication_inputs :: Lens.Lens' CreateApplication (Prelude.Maybe [Input])
+createApplication_inputs = Lens.lens (\CreateApplication' {inputs} -> inputs) (\s@CreateApplication' {} a -> s {inputs = a} :: CreateApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | You can configure application output to write data from any of the
+-- in-application streams to up to three destinations.
+--
+-- These destinations can be Amazon Kinesis streams, Amazon Kinesis
+-- Firehose delivery streams, AWS Lambda destinations, or any combination
+-- of the three.
+--
+-- In the configuration, you specify the in-application stream name, the
+-- destination stream or Lambda function Amazon Resource Name (ARN), and
+-- the format to use when writing data. You must also provide an IAM role
+-- that Amazon Kinesis Analytics can assume to write to the destination
+-- stream or Lambda function on your behalf.
+--
+-- In the output configuration, you also provide the output stream or
+-- Lambda function ARN. For stream destinations, you provide the format of
+-- data in the stream (for example, JSON, CSV). You also must provide an
+-- IAM role that Amazon Kinesis Analytics can assume to write to the stream
+-- or Lambda function on your behalf.
+createApplication_outputs :: Lens.Lens' CreateApplication (Prelude.Maybe [Output])
+createApplication_outputs = Lens.lens (\CreateApplication' {outputs} -> outputs) (\s@CreateApplication' {} a -> s {outputs = a} :: CreateApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of one or more tags to assign to the application. A tag is a
+-- key-value pair that identifies an application. Note that the maximum
+-- number of application tags includes system tags. The maximum number of
+-- user-defined application tags is 50. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+createApplication_tags :: Lens.Lens' CreateApplication (Prelude.Maybe (Prelude.NonEmpty Tag))
+createApplication_tags = Lens.lens (\CreateApplication' {tags} -> tags) (\s@CreateApplication' {} a -> s {tags = a} :: CreateApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | Name of your Amazon Kinesis Analytics application (for example,
+-- @sample-app@).
+createApplication_applicationName :: Lens.Lens' CreateApplication Prelude.Text
+createApplication_applicationName = Lens.lens (\CreateApplication' {applicationName} -> applicationName) (\s@CreateApplication' {} a -> s {applicationName = a} :: CreateApplication)
+
+instance Core.AWSRequest CreateApplication where
+  type
+    AWSResponse CreateApplication =
+      CreateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ApplicationSummary")
+      )
+
+instance Prelude.Hashable CreateApplication where
+  hashWithSalt _salt CreateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationCode
+      `Prelude.hashWithSalt` applicationDescription
+      `Prelude.hashWithSalt` cloudWatchLoggingOptions
+      `Prelude.hashWithSalt` inputs
+      `Prelude.hashWithSalt` outputs
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` applicationName
+
+instance Prelude.NFData CreateApplication where
+  rnf CreateApplication' {..} =
+    Prelude.rnf applicationCode
+      `Prelude.seq` Prelude.rnf applicationDescription
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOptions
+      `Prelude.seq` Prelude.rnf inputs
+      `Prelude.seq` Prelude.rnf outputs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf applicationName
+
+instance Data.ToHeaders CreateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.CreateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateApplication where
+  toJSON CreateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplicationCode" Data..=)
+              Prelude.<$> applicationCode,
+            ("ApplicationDescription" Data..=)
+              Prelude.<$> applicationDescription,
+            ("CloudWatchLoggingOptions" Data..=)
+              Prelude.<$> cloudWatchLoggingOptions,
+            ("Inputs" Data..=) Prelude.<$> inputs,
+            ("Outputs" Data..=) Prelude.<$> outputs,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ApplicationName" Data..= applicationName)
+          ]
+      )
+
+instance Data.ToPath CreateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | TBD
+--
+-- /See:/ 'newCreateApplicationResponse' smart constructor.
+data CreateApplicationResponse = CreateApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | In response to your @CreateApplication@ request, Amazon Kinesis
+    -- Analytics returns a response with a summary of the application it
+    -- created, including the application Amazon Resource Name (ARN), name, and
+    -- status.
+    applicationSummary :: ApplicationSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createApplicationResponse_httpStatus' - The response's http status code.
+--
+-- 'applicationSummary', 'createApplicationResponse_applicationSummary' - In response to your @CreateApplication@ request, Amazon Kinesis
+-- Analytics returns a response with a summary of the application it
+-- created, including the application Amazon Resource Name (ARN), name, and
+-- status.
+newCreateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'applicationSummary'
+  ApplicationSummary ->
+  CreateApplicationResponse
+newCreateApplicationResponse
+  pHttpStatus_
+  pApplicationSummary_ =
+    CreateApplicationResponse'
+      { httpStatus =
+          pHttpStatus_,
+        applicationSummary = pApplicationSummary_
+      }
+
+-- | The response's http status code.
+createApplicationResponse_httpStatus :: Lens.Lens' CreateApplicationResponse Prelude.Int
+createApplicationResponse_httpStatus = Lens.lens (\CreateApplicationResponse' {httpStatus} -> httpStatus) (\s@CreateApplicationResponse' {} a -> s {httpStatus = a} :: CreateApplicationResponse)
+
+-- | In response to your @CreateApplication@ request, Amazon Kinesis
+-- Analytics returns a response with a summary of the application it
+-- created, including the application Amazon Resource Name (ARN), name, and
+-- status.
+createApplicationResponse_applicationSummary :: Lens.Lens' CreateApplicationResponse ApplicationSummary
+createApplicationResponse_applicationSummary = Lens.lens (\CreateApplicationResponse' {applicationSummary} -> applicationSummary) (\s@CreateApplicationResponse' {} a -> s {applicationSummary = a} :: CreateApplicationResponse)
+
+instance Prelude.NFData CreateApplicationResponse where
+  rnf CreateApplicationResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf applicationSummary
diff --git a/gen/Amazonka/KinesisAnalytics/DeleteApplication.hs b/gen/Amazonka/KinesisAnalytics/DeleteApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DeleteApplication.hs
@@ -0,0 +1,197 @@
+{-# 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.KinesisAnalytics.DeleteApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Deletes the specified application. Amazon Kinesis Analytics halts
+-- application execution and deletes the application, including any
+-- application artifacts (such as in-application streams, reference table,
+-- and application code).
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:DeleteApplication@ action.
+module Amazonka.KinesisAnalytics.DeleteApplication
+  ( -- * Creating a Request
+    DeleteApplication (..),
+    newDeleteApplication,
+
+    -- * Request Lenses
+    deleteApplication_applicationName,
+    deleteApplication_createTimestamp,
+
+    -- * Destructuring the Response
+    DeleteApplicationResponse (..),
+    newDeleteApplicationResponse,
+
+    -- * Response Lenses
+    deleteApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newDeleteApplication' smart constructor.
+data DeleteApplication = DeleteApplication'
+  { -- | Name of the Amazon Kinesis Analytics application to delete.
+    applicationName :: Prelude.Text,
+    -- | You can use the @DescribeApplication@ operation to get this value.
+    createTimestamp :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'deleteApplication_applicationName' - Name of the Amazon Kinesis Analytics application to delete.
+--
+-- 'createTimestamp', 'deleteApplication_createTimestamp' - You can use the @DescribeApplication@ operation to get this value.
+newDeleteApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'createTimestamp'
+  Prelude.UTCTime ->
+  DeleteApplication
+newDeleteApplication
+  pApplicationName_
+  pCreateTimestamp_ =
+    DeleteApplication'
+      { applicationName =
+          pApplicationName_,
+        createTimestamp =
+          Data._Time Lens.# pCreateTimestamp_
+      }
+
+-- | Name of the Amazon Kinesis Analytics application to delete.
+deleteApplication_applicationName :: Lens.Lens' DeleteApplication Prelude.Text
+deleteApplication_applicationName = Lens.lens (\DeleteApplication' {applicationName} -> applicationName) (\s@DeleteApplication' {} a -> s {applicationName = a} :: DeleteApplication)
+
+-- | You can use the @DescribeApplication@ operation to get this value.
+deleteApplication_createTimestamp :: Lens.Lens' DeleteApplication Prelude.UTCTime
+deleteApplication_createTimestamp = Lens.lens (\DeleteApplication' {createTimestamp} -> createTimestamp) (\s@DeleteApplication' {} a -> s {createTimestamp = a} :: DeleteApplication) Prelude.. Data._Time
+
+instance Core.AWSRequest DeleteApplication where
+  type
+    AWSResponse DeleteApplication =
+      DeleteApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApplication where
+  hashWithSalt _salt DeleteApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` createTimestamp
+
+instance Prelude.NFData DeleteApplication where
+  rnf DeleteApplication' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf createTimestamp
+
+instance Data.ToHeaders DeleteApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DeleteApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteApplication where
+  toJSON DeleteApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ("CreateTimestamp" Data..= createTimestamp)
+          ]
+      )
+
+instance Data.ToPath DeleteApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newDeleteApplicationResponse' smart constructor.
+data DeleteApplicationResponse = DeleteApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationResponse_httpStatus' - The response's http status code.
+newDeleteApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationResponse
+newDeleteApplicationResponse pHttpStatus_ =
+  DeleteApplicationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteApplicationResponse_httpStatus :: Lens.Lens' DeleteApplicationResponse Prelude.Int
+deleteApplicationResponse_httpStatus = Lens.lens (\DeleteApplicationResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationResponse' {} a -> s {httpStatus = a} :: DeleteApplicationResponse)
+
+instance Prelude.NFData DeleteApplicationResponse where
+  rnf DeleteApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs b/gen/Amazonka/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs
@@ -0,0 +1,250 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Deletes a CloudWatch log stream from an application. For more
+-- information about using CloudWatch log streams with Amazon Kinesis
+-- Analytics applications, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+module Amazonka.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
+  ( -- * Creating a Request
+    DeleteApplicationCloudWatchLoggingOption (..),
+    newDeleteApplicationCloudWatchLoggingOption,
+
+    -- * Request Lenses
+    deleteApplicationCloudWatchLoggingOption_applicationName,
+    deleteApplicationCloudWatchLoggingOption_currentApplicationVersionId,
+    deleteApplicationCloudWatchLoggingOption_cloudWatchLoggingOptionId,
+
+    -- * Destructuring the Response
+    DeleteApplicationCloudWatchLoggingOptionResponse (..),
+    newDeleteApplicationCloudWatchLoggingOptionResponse,
+
+    -- * Response Lenses
+    deleteApplicationCloudWatchLoggingOptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteApplicationCloudWatchLoggingOption' smart constructor.
+data DeleteApplicationCloudWatchLoggingOption = DeleteApplicationCloudWatchLoggingOption'
+  { -- | The Kinesis Analytics application name.
+    applicationName :: Prelude.Text,
+    -- | The version ID of the Kinesis Analytics application.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The @CloudWatchLoggingOptionId@ of the CloudWatch logging option to
+    -- delete. You can get the @CloudWatchLoggingOptionId@ by using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation.
+    cloudWatchLoggingOptionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationCloudWatchLoggingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'deleteApplicationCloudWatchLoggingOption_applicationName' - The Kinesis Analytics application name.
+--
+-- 'currentApplicationVersionId', 'deleteApplicationCloudWatchLoggingOption_currentApplicationVersionId' - The version ID of the Kinesis Analytics application.
+--
+-- 'cloudWatchLoggingOptionId', 'deleteApplicationCloudWatchLoggingOption_cloudWatchLoggingOptionId' - The @CloudWatchLoggingOptionId@ of the CloudWatch logging option to
+-- delete. You can get the @CloudWatchLoggingOptionId@ by using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+newDeleteApplicationCloudWatchLoggingOption ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'cloudWatchLoggingOptionId'
+  Prelude.Text ->
+  DeleteApplicationCloudWatchLoggingOption
+newDeleteApplicationCloudWatchLoggingOption
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pCloudWatchLoggingOptionId_ =
+    DeleteApplicationCloudWatchLoggingOption'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        cloudWatchLoggingOptionId =
+          pCloudWatchLoggingOptionId_
+      }
+
+-- | The Kinesis Analytics application name.
+deleteApplicationCloudWatchLoggingOption_applicationName :: Lens.Lens' DeleteApplicationCloudWatchLoggingOption Prelude.Text
+deleteApplicationCloudWatchLoggingOption_applicationName = Lens.lens (\DeleteApplicationCloudWatchLoggingOption' {applicationName} -> applicationName) (\s@DeleteApplicationCloudWatchLoggingOption' {} a -> s {applicationName = a} :: DeleteApplicationCloudWatchLoggingOption)
+
+-- | The version ID of the Kinesis Analytics application.
+deleteApplicationCloudWatchLoggingOption_currentApplicationVersionId :: Lens.Lens' DeleteApplicationCloudWatchLoggingOption Prelude.Natural
+deleteApplicationCloudWatchLoggingOption_currentApplicationVersionId = Lens.lens (\DeleteApplicationCloudWatchLoggingOption' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@DeleteApplicationCloudWatchLoggingOption' {} a -> s {currentApplicationVersionId = a} :: DeleteApplicationCloudWatchLoggingOption)
+
+-- | The @CloudWatchLoggingOptionId@ of the CloudWatch logging option to
+-- delete. You can get the @CloudWatchLoggingOptionId@ by using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+deleteApplicationCloudWatchLoggingOption_cloudWatchLoggingOptionId :: Lens.Lens' DeleteApplicationCloudWatchLoggingOption Prelude.Text
+deleteApplicationCloudWatchLoggingOption_cloudWatchLoggingOptionId = Lens.lens (\DeleteApplicationCloudWatchLoggingOption' {cloudWatchLoggingOptionId} -> cloudWatchLoggingOptionId) (\s@DeleteApplicationCloudWatchLoggingOption' {} a -> s {cloudWatchLoggingOptionId = a} :: DeleteApplicationCloudWatchLoggingOption)
+
+instance
+  Core.AWSRequest
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  type
+    AWSResponse
+      DeleteApplicationCloudWatchLoggingOption =
+      DeleteApplicationCloudWatchLoggingOptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationCloudWatchLoggingOptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  hashWithSalt
+    _salt
+    DeleteApplicationCloudWatchLoggingOption' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` cloudWatchLoggingOptionId
+
+instance
+  Prelude.NFData
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  rnf DeleteApplicationCloudWatchLoggingOption' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOptionId
+
+instance
+  Data.ToHeaders
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DeleteApplicationCloudWatchLoggingOption" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  toJSON DeleteApplicationCloudWatchLoggingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just
+              ( "CloudWatchLoggingOptionId"
+                  Data..= cloudWatchLoggingOptionId
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteApplicationCloudWatchLoggingOption
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationCloudWatchLoggingOptionResponse' smart constructor.
+data DeleteApplicationCloudWatchLoggingOptionResponse = DeleteApplicationCloudWatchLoggingOptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationCloudWatchLoggingOptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationCloudWatchLoggingOptionResponse_httpStatus' - The response's http status code.
+newDeleteApplicationCloudWatchLoggingOptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationCloudWatchLoggingOptionResponse
+newDeleteApplicationCloudWatchLoggingOptionResponse
+  pHttpStatus_ =
+    DeleteApplicationCloudWatchLoggingOptionResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteApplicationCloudWatchLoggingOptionResponse_httpStatus :: Lens.Lens' DeleteApplicationCloudWatchLoggingOptionResponse Prelude.Int
+deleteApplicationCloudWatchLoggingOptionResponse_httpStatus = Lens.lens (\DeleteApplicationCloudWatchLoggingOptionResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationCloudWatchLoggingOptionResponse' {} a -> s {httpStatus = a} :: DeleteApplicationCloudWatchLoggingOptionResponse)
+
+instance
+  Prelude.NFData
+    DeleteApplicationCloudWatchLoggingOptionResponse
+  where
+  rnf
+    DeleteApplicationCloudWatchLoggingOptionResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs b/gen/Amazonka/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs
@@ -0,0 +1,250 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Deletes an
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- from an input.
+module Amazonka.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
+  ( -- * Creating a Request
+    DeleteApplicationInputProcessingConfiguration (..),
+    newDeleteApplicationInputProcessingConfiguration,
+
+    -- * Request Lenses
+    deleteApplicationInputProcessingConfiguration_applicationName,
+    deleteApplicationInputProcessingConfiguration_currentApplicationVersionId,
+    deleteApplicationInputProcessingConfiguration_inputId,
+
+    -- * Destructuring the Response
+    DeleteApplicationInputProcessingConfigurationResponse (..),
+    newDeleteApplicationInputProcessingConfigurationResponse,
+
+    -- * Response Lenses
+    deleteApplicationInputProcessingConfigurationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteApplicationInputProcessingConfiguration' smart constructor.
+data DeleteApplicationInputProcessingConfiguration = DeleteApplicationInputProcessingConfiguration'
+  { -- | The Kinesis Analytics application name.
+    applicationName :: Prelude.Text,
+    -- | The version ID of the Kinesis Analytics application.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The ID of the input configuration from which to delete the input
+    -- processing configuration. You can get a list of the input IDs for an
+    -- application by using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation.
+    inputId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationInputProcessingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'deleteApplicationInputProcessingConfiguration_applicationName' - The Kinesis Analytics application name.
+--
+-- 'currentApplicationVersionId', 'deleteApplicationInputProcessingConfiguration_currentApplicationVersionId' - The version ID of the Kinesis Analytics application.
+--
+-- 'inputId', 'deleteApplicationInputProcessingConfiguration_inputId' - The ID of the input configuration from which to delete the input
+-- processing configuration. You can get a list of the input IDs for an
+-- application by using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+newDeleteApplicationInputProcessingConfiguration ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'inputId'
+  Prelude.Text ->
+  DeleteApplicationInputProcessingConfiguration
+newDeleteApplicationInputProcessingConfiguration
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pInputId_ =
+    DeleteApplicationInputProcessingConfiguration'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        inputId = pInputId_
+      }
+
+-- | The Kinesis Analytics application name.
+deleteApplicationInputProcessingConfiguration_applicationName :: Lens.Lens' DeleteApplicationInputProcessingConfiguration Prelude.Text
+deleteApplicationInputProcessingConfiguration_applicationName = Lens.lens (\DeleteApplicationInputProcessingConfiguration' {applicationName} -> applicationName) (\s@DeleteApplicationInputProcessingConfiguration' {} a -> s {applicationName = a} :: DeleteApplicationInputProcessingConfiguration)
+
+-- | The version ID of the Kinesis Analytics application.
+deleteApplicationInputProcessingConfiguration_currentApplicationVersionId :: Lens.Lens' DeleteApplicationInputProcessingConfiguration Prelude.Natural
+deleteApplicationInputProcessingConfiguration_currentApplicationVersionId = Lens.lens (\DeleteApplicationInputProcessingConfiguration' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@DeleteApplicationInputProcessingConfiguration' {} a -> s {currentApplicationVersionId = a} :: DeleteApplicationInputProcessingConfiguration)
+
+-- | The ID of the input configuration from which to delete the input
+-- processing configuration. You can get a list of the input IDs for an
+-- application by using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+deleteApplicationInputProcessingConfiguration_inputId :: Lens.Lens' DeleteApplicationInputProcessingConfiguration Prelude.Text
+deleteApplicationInputProcessingConfiguration_inputId = Lens.lens (\DeleteApplicationInputProcessingConfiguration' {inputId} -> inputId) (\s@DeleteApplicationInputProcessingConfiguration' {} a -> s {inputId = a} :: DeleteApplicationInputProcessingConfiguration)
+
+instance
+  Core.AWSRequest
+    DeleteApplicationInputProcessingConfiguration
+  where
+  type
+    AWSResponse
+      DeleteApplicationInputProcessingConfiguration =
+      DeleteApplicationInputProcessingConfigurationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationInputProcessingConfigurationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteApplicationInputProcessingConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteApplicationInputProcessingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` inputId
+
+instance
+  Prelude.NFData
+    DeleteApplicationInputProcessingConfiguration
+  where
+  rnf
+    DeleteApplicationInputProcessingConfiguration' {..} =
+      Prelude.rnf applicationName
+        `Prelude.seq` Prelude.rnf currentApplicationVersionId
+        `Prelude.seq` Prelude.rnf inputId
+
+instance
+  Data.ToHeaders
+    DeleteApplicationInputProcessingConfiguration
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DeleteApplicationInputProcessingConfiguration" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteApplicationInputProcessingConfiguration
+  where
+  toJSON
+    DeleteApplicationInputProcessingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("ApplicationName" Data..= applicationName),
+              Prelude.Just
+                ( "CurrentApplicationVersionId"
+                    Data..= currentApplicationVersionId
+                ),
+              Prelude.Just ("InputId" Data..= inputId)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DeleteApplicationInputProcessingConfiguration
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteApplicationInputProcessingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationInputProcessingConfigurationResponse' smart constructor.
+data DeleteApplicationInputProcessingConfigurationResponse = DeleteApplicationInputProcessingConfigurationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationInputProcessingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationInputProcessingConfigurationResponse_httpStatus' - The response's http status code.
+newDeleteApplicationInputProcessingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationInputProcessingConfigurationResponse
+newDeleteApplicationInputProcessingConfigurationResponse
+  pHttpStatus_ =
+    DeleteApplicationInputProcessingConfigurationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteApplicationInputProcessingConfigurationResponse_httpStatus :: Lens.Lens' DeleteApplicationInputProcessingConfigurationResponse Prelude.Int
+deleteApplicationInputProcessingConfigurationResponse_httpStatus = Lens.lens (\DeleteApplicationInputProcessingConfigurationResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationInputProcessingConfigurationResponse' {} a -> s {httpStatus = a} :: DeleteApplicationInputProcessingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    DeleteApplicationInputProcessingConfigurationResponse
+  where
+  rnf
+    DeleteApplicationInputProcessingConfigurationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/DeleteApplicationOutput.hs b/gen/Amazonka/KinesisAnalytics/DeleteApplicationOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DeleteApplicationOutput.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.DeleteApplicationOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Deletes output destination configuration from your application
+-- configuration. Amazon Kinesis Analytics will no longer write data from
+-- the corresponding in-application stream to the external output
+-- destination.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:DeleteApplicationOutput@ action.
+module Amazonka.KinesisAnalytics.DeleteApplicationOutput
+  ( -- * Creating a Request
+    DeleteApplicationOutput (..),
+    newDeleteApplicationOutput,
+
+    -- * Request Lenses
+    deleteApplicationOutput_applicationName,
+    deleteApplicationOutput_currentApplicationVersionId,
+    deleteApplicationOutput_outputId,
+
+    -- * Destructuring the Response
+    DeleteApplicationOutputResponse (..),
+    newDeleteApplicationOutputResponse,
+
+    -- * Response Lenses
+    deleteApplicationOutputResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newDeleteApplicationOutput' smart constructor.
+data DeleteApplicationOutput = DeleteApplicationOutput'
+  { -- | Amazon Kinesis Analytics application name.
+    applicationName :: Prelude.Text,
+    -- | Amazon Kinesis Analytics application version. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the current application version. If the version
+    -- specified is not the current version, the
+    -- @ConcurrentModificationException@ is returned.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | The ID of the configuration to delete. Each output configuration that is
+    -- added to the application, either when the application is created or
+    -- later using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationOutput.html AddApplicationOutput>
+    -- operation, has a unique ID. You need to provide the ID to uniquely
+    -- identify the output configuration that you want to delete from the
+    -- application configuration. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the specific @OutputId@.
+    outputId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'deleteApplicationOutput_applicationName' - Amazon Kinesis Analytics application name.
+--
+-- 'currentApplicationVersionId', 'deleteApplicationOutput_currentApplicationVersionId' - Amazon Kinesis Analytics application version. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+--
+-- 'outputId', 'deleteApplicationOutput_outputId' - The ID of the configuration to delete. Each output configuration that is
+-- added to the application, either when the application is created or
+-- later using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationOutput.html AddApplicationOutput>
+-- operation, has a unique ID. You need to provide the ID to uniquely
+-- identify the output configuration that you want to delete from the
+-- application configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the specific @OutputId@.
+newDeleteApplicationOutput ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'outputId'
+  Prelude.Text ->
+  DeleteApplicationOutput
+newDeleteApplicationOutput
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pOutputId_ =
+    DeleteApplicationOutput'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        outputId = pOutputId_
+      }
+
+-- | Amazon Kinesis Analytics application name.
+deleteApplicationOutput_applicationName :: Lens.Lens' DeleteApplicationOutput Prelude.Text
+deleteApplicationOutput_applicationName = Lens.lens (\DeleteApplicationOutput' {applicationName} -> applicationName) (\s@DeleteApplicationOutput' {} a -> s {applicationName = a} :: DeleteApplicationOutput)
+
+-- | Amazon Kinesis Analytics application version. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+deleteApplicationOutput_currentApplicationVersionId :: Lens.Lens' DeleteApplicationOutput Prelude.Natural
+deleteApplicationOutput_currentApplicationVersionId = Lens.lens (\DeleteApplicationOutput' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@DeleteApplicationOutput' {} a -> s {currentApplicationVersionId = a} :: DeleteApplicationOutput)
+
+-- | The ID of the configuration to delete. Each output configuration that is
+-- added to the application, either when the application is created or
+-- later using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationOutput.html AddApplicationOutput>
+-- operation, has a unique ID. You need to provide the ID to uniquely
+-- identify the output configuration that you want to delete from the
+-- application configuration. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the specific @OutputId@.
+deleteApplicationOutput_outputId :: Lens.Lens' DeleteApplicationOutput Prelude.Text
+deleteApplicationOutput_outputId = Lens.lens (\DeleteApplicationOutput' {outputId} -> outputId) (\s@DeleteApplicationOutput' {} a -> s {outputId = a} :: DeleteApplicationOutput)
+
+instance Core.AWSRequest DeleteApplicationOutput where
+  type
+    AWSResponse DeleteApplicationOutput =
+      DeleteApplicationOutputResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationOutputResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApplicationOutput where
+  hashWithSalt _salt DeleteApplicationOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` currentApplicationVersionId
+      `Prelude.hashWithSalt` outputId
+
+instance Prelude.NFData DeleteApplicationOutput where
+  rnf DeleteApplicationOutput' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf outputId
+
+instance Data.ToHeaders DeleteApplicationOutput where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DeleteApplicationOutput" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteApplicationOutput where
+  toJSON DeleteApplicationOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just ("OutputId" Data..= outputId)
+          ]
+      )
+
+instance Data.ToPath DeleteApplicationOutput where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteApplicationOutput where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newDeleteApplicationOutputResponse' smart constructor.
+data DeleteApplicationOutputResponse = DeleteApplicationOutputResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationOutputResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationOutputResponse_httpStatus' - The response's http status code.
+newDeleteApplicationOutputResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationOutputResponse
+newDeleteApplicationOutputResponse pHttpStatus_ =
+  DeleteApplicationOutputResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteApplicationOutputResponse_httpStatus :: Lens.Lens' DeleteApplicationOutputResponse Prelude.Int
+deleteApplicationOutputResponse_httpStatus = Lens.lens (\DeleteApplicationOutputResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationOutputResponse' {} a -> s {httpStatus = a} :: DeleteApplicationOutputResponse)
+
+instance
+  Prelude.NFData
+    DeleteApplicationOutputResponse
+  where
+  rnf DeleteApplicationOutputResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs b/gen/Amazonka/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs
@@ -0,0 +1,268 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.DeleteApplicationReferenceDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Deletes a reference data source configuration from the specified
+-- application configuration.
+--
+-- If the application is running, Amazon Kinesis Analytics immediately
+-- removes the in-application table that you created using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>
+-- operation.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics.DeleteApplicationReferenceDataSource@ action.
+module Amazonka.KinesisAnalytics.DeleteApplicationReferenceDataSource
+  ( -- * Creating a Request
+    DeleteApplicationReferenceDataSource (..),
+    newDeleteApplicationReferenceDataSource,
+
+    -- * Request Lenses
+    deleteApplicationReferenceDataSource_applicationName,
+    deleteApplicationReferenceDataSource_currentApplicationVersionId,
+    deleteApplicationReferenceDataSource_referenceId,
+
+    -- * Destructuring the Response
+    DeleteApplicationReferenceDataSourceResponse (..),
+    newDeleteApplicationReferenceDataSourceResponse,
+
+    -- * Response Lenses
+    deleteApplicationReferenceDataSourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteApplicationReferenceDataSource' smart constructor.
+data DeleteApplicationReferenceDataSource = DeleteApplicationReferenceDataSource'
+  { -- | Name of an existing application.
+    applicationName :: Prelude.Text,
+    -- | Version of the application. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the current application version. If the version
+    -- specified is not the current version, the
+    -- @ConcurrentModificationException@ is returned.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | ID of the reference data source. When you add a reference data source to
+    -- your application using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>,
+    -- Amazon Kinesis Analytics assigns an ID. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get the reference ID.
+    referenceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationReferenceDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'deleteApplicationReferenceDataSource_applicationName' - Name of an existing application.
+--
+-- 'currentApplicationVersionId', 'deleteApplicationReferenceDataSource_currentApplicationVersionId' - Version of the application. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+--
+-- 'referenceId', 'deleteApplicationReferenceDataSource_referenceId' - ID of the reference data source. When you add a reference data source to
+-- your application using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>,
+-- Amazon Kinesis Analytics assigns an ID. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the reference ID.
+newDeleteApplicationReferenceDataSource ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'referenceId'
+  Prelude.Text ->
+  DeleteApplicationReferenceDataSource
+newDeleteApplicationReferenceDataSource
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pReferenceId_ =
+    DeleteApplicationReferenceDataSource'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        referenceId = pReferenceId_
+      }
+
+-- | Name of an existing application.
+deleteApplicationReferenceDataSource_applicationName :: Lens.Lens' DeleteApplicationReferenceDataSource Prelude.Text
+deleteApplicationReferenceDataSource_applicationName = Lens.lens (\DeleteApplicationReferenceDataSource' {applicationName} -> applicationName) (\s@DeleteApplicationReferenceDataSource' {} a -> s {applicationName = a} :: DeleteApplicationReferenceDataSource)
+
+-- | Version of the application. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the current application version. If the version
+-- specified is not the current version, the
+-- @ConcurrentModificationException@ is returned.
+deleteApplicationReferenceDataSource_currentApplicationVersionId :: Lens.Lens' DeleteApplicationReferenceDataSource Prelude.Natural
+deleteApplicationReferenceDataSource_currentApplicationVersionId = Lens.lens (\DeleteApplicationReferenceDataSource' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@DeleteApplicationReferenceDataSource' {} a -> s {currentApplicationVersionId = a} :: DeleteApplicationReferenceDataSource)
+
+-- | ID of the reference data source. When you add a reference data source to
+-- your application using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>,
+-- Amazon Kinesis Analytics assigns an ID. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get the reference ID.
+deleteApplicationReferenceDataSource_referenceId :: Lens.Lens' DeleteApplicationReferenceDataSource Prelude.Text
+deleteApplicationReferenceDataSource_referenceId = Lens.lens (\DeleteApplicationReferenceDataSource' {referenceId} -> referenceId) (\s@DeleteApplicationReferenceDataSource' {} a -> s {referenceId = a} :: DeleteApplicationReferenceDataSource)
+
+instance
+  Core.AWSRequest
+    DeleteApplicationReferenceDataSource
+  where
+  type
+    AWSResponse DeleteApplicationReferenceDataSource =
+      DeleteApplicationReferenceDataSourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationReferenceDataSourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteApplicationReferenceDataSource
+  where
+  hashWithSalt
+    _salt
+    DeleteApplicationReferenceDataSource' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationName
+        `Prelude.hashWithSalt` currentApplicationVersionId
+        `Prelude.hashWithSalt` referenceId
+
+instance
+  Prelude.NFData
+    DeleteApplicationReferenceDataSource
+  where
+  rnf DeleteApplicationReferenceDataSource' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf referenceId
+
+instance
+  Data.ToHeaders
+    DeleteApplicationReferenceDataSource
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DeleteApplicationReferenceDataSource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteApplicationReferenceDataSource
+  where
+  toJSON DeleteApplicationReferenceDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just ("ReferenceId" Data..= referenceId)
+          ]
+      )
+
+instance
+  Data.ToPath
+    DeleteApplicationReferenceDataSource
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteApplicationReferenceDataSource
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationReferenceDataSourceResponse' smart constructor.
+data DeleteApplicationReferenceDataSourceResponse = DeleteApplicationReferenceDataSourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationReferenceDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationReferenceDataSourceResponse_httpStatus' - The response's http status code.
+newDeleteApplicationReferenceDataSourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationReferenceDataSourceResponse
+newDeleteApplicationReferenceDataSourceResponse
+  pHttpStatus_ =
+    DeleteApplicationReferenceDataSourceResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteApplicationReferenceDataSourceResponse_httpStatus :: Lens.Lens' DeleteApplicationReferenceDataSourceResponse Prelude.Int
+deleteApplicationReferenceDataSourceResponse_httpStatus = Lens.lens (\DeleteApplicationReferenceDataSourceResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationReferenceDataSourceResponse' {} a -> s {httpStatus = a} :: DeleteApplicationReferenceDataSourceResponse)
+
+instance
+  Prelude.NFData
+    DeleteApplicationReferenceDataSourceResponse
+  where
+  rnf DeleteApplicationReferenceDataSourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/DescribeApplication.hs b/gen/Amazonka/KinesisAnalytics/DescribeApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DescribeApplication.hs
@@ -0,0 +1,204 @@
+{-# 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.KinesisAnalytics.DescribeApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Returns information about a specific Amazon Kinesis Analytics
+-- application.
+--
+-- If you want to retrieve a list of all applications in your account, use
+-- the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_ListApplications.html ListApplications>
+-- operation.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:DescribeApplication@ action. You can use
+-- @DescribeApplication@ to get the current application versionId, which
+-- you need to call other operations such as @Update@.
+module Amazonka.KinesisAnalytics.DescribeApplication
+  ( -- * Creating a Request
+    DescribeApplication (..),
+    newDescribeApplication,
+
+    -- * Request Lenses
+    describeApplication_applicationName,
+
+    -- * Destructuring the Response
+    DescribeApplicationResponse (..),
+    newDescribeApplicationResponse,
+
+    -- * Response Lenses
+    describeApplicationResponse_httpStatus,
+    describeApplicationResponse_applicationDetail,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newDescribeApplication' smart constructor.
+data DescribeApplication = DescribeApplication'
+  { -- | Name of the application.
+    applicationName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'describeApplication_applicationName' - Name of the application.
+newDescribeApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  DescribeApplication
+newDescribeApplication pApplicationName_ =
+  DescribeApplication'
+    { applicationName =
+        pApplicationName_
+    }
+
+-- | Name of the application.
+describeApplication_applicationName :: Lens.Lens' DescribeApplication Prelude.Text
+describeApplication_applicationName = Lens.lens (\DescribeApplication' {applicationName} -> applicationName) (\s@DescribeApplication' {} a -> s {applicationName = a} :: DescribeApplication)
+
+instance Core.AWSRequest DescribeApplication where
+  type
+    AWSResponse DescribeApplication =
+      DescribeApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ApplicationDetail")
+      )
+
+instance Prelude.Hashable DescribeApplication where
+  hashWithSalt _salt DescribeApplication' {..} =
+    _salt `Prelude.hashWithSalt` applicationName
+
+instance Prelude.NFData DescribeApplication where
+  rnf DescribeApplication' {..} =
+    Prelude.rnf applicationName
+
+instance Data.ToHeaders DescribeApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DescribeApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeApplication where
+  toJSON DescribeApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName)
+          ]
+      )
+
+instance Data.ToPath DescribeApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newDescribeApplicationResponse' smart constructor.
+data DescribeApplicationResponse = DescribeApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Provides a description of the application, such as the application
+    -- Amazon Resource Name (ARN), status, latest version, and input and output
+    -- configuration details.
+    applicationDetail :: ApplicationDetail
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeApplicationResponse_httpStatus' - The response's http status code.
+--
+-- 'applicationDetail', 'describeApplicationResponse_applicationDetail' - Provides a description of the application, such as the application
+-- Amazon Resource Name (ARN), status, latest version, and input and output
+-- configuration details.
+newDescribeApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'applicationDetail'
+  ApplicationDetail ->
+  DescribeApplicationResponse
+newDescribeApplicationResponse
+  pHttpStatus_
+  pApplicationDetail_ =
+    DescribeApplicationResponse'
+      { httpStatus =
+          pHttpStatus_,
+        applicationDetail = pApplicationDetail_
+      }
+
+-- | The response's http status code.
+describeApplicationResponse_httpStatus :: Lens.Lens' DescribeApplicationResponse Prelude.Int
+describeApplicationResponse_httpStatus = Lens.lens (\DescribeApplicationResponse' {httpStatus} -> httpStatus) (\s@DescribeApplicationResponse' {} a -> s {httpStatus = a} :: DescribeApplicationResponse)
+
+-- | Provides a description of the application, such as the application
+-- Amazon Resource Name (ARN), status, latest version, and input and output
+-- configuration details.
+describeApplicationResponse_applicationDetail :: Lens.Lens' DescribeApplicationResponse ApplicationDetail
+describeApplicationResponse_applicationDetail = Lens.lens (\DescribeApplicationResponse' {applicationDetail} -> applicationDetail) (\s@DescribeApplicationResponse' {} a -> s {applicationDetail = a} :: DescribeApplicationResponse)
+
+instance Prelude.NFData DescribeApplicationResponse where
+  rnf DescribeApplicationResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf applicationDetail
diff --git a/gen/Amazonka/KinesisAnalytics/DiscoverInputSchema.hs b/gen/Amazonka/KinesisAnalytics/DiscoverInputSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/DiscoverInputSchema.hs
@@ -0,0 +1,323 @@
+{-# 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.KinesisAnalytics.DiscoverInputSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Infers a schema by evaluating sample records on the specified streaming
+-- source (Amazon Kinesis stream or Amazon Kinesis Firehose delivery
+-- stream) or S3 object. In the response, the operation returns the
+-- inferred schema and also the sample records that the operation used to
+-- infer the schema.
+--
+-- You can use the inferred schema when configuring a streaming source for
+-- your application. For conceptual information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+-- Note that when you create an application using the Amazon Kinesis
+-- Analytics console, the console uses this operation to infer a schema and
+-- show it in the console user interface.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:DiscoverInputSchema@ action.
+module Amazonka.KinesisAnalytics.DiscoverInputSchema
+  ( -- * Creating a Request
+    DiscoverInputSchema (..),
+    newDiscoverInputSchema,
+
+    -- * Request Lenses
+    discoverInputSchema_inputProcessingConfiguration,
+    discoverInputSchema_inputStartingPositionConfiguration,
+    discoverInputSchema_resourceARN,
+    discoverInputSchema_roleARN,
+    discoverInputSchema_s3Configuration,
+
+    -- * Destructuring the Response
+    DiscoverInputSchemaResponse (..),
+    newDiscoverInputSchemaResponse,
+
+    -- * Response Lenses
+    discoverInputSchemaResponse_inputSchema,
+    discoverInputSchemaResponse_parsedInputRecords,
+    discoverInputSchemaResponse_processedInputRecords,
+    discoverInputSchemaResponse_rawInputRecords,
+    discoverInputSchemaResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDiscoverInputSchema' smart constructor.
+data DiscoverInputSchema = DiscoverInputSchema'
+  { -- | The
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+    -- to use to preprocess the records before discovering the schema of the
+    -- records.
+    inputProcessingConfiguration :: Prelude.Maybe InputProcessingConfiguration,
+    -- | Point at which you want Amazon Kinesis Analytics to start reading
+    -- records from the specified streaming source discovery purposes.
+    inputStartingPositionConfiguration :: Prelude.Maybe InputStartingPositionConfiguration,
+    -- | Amazon Resource Name (ARN) of the streaming source.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf.
+    roleARN :: Prelude.Maybe Prelude.Text,
+    -- | Specify this parameter to discover a schema from data in an Amazon S3
+    -- object.
+    s3Configuration :: Prelude.Maybe S3Configuration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DiscoverInputSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputProcessingConfiguration', 'discoverInputSchema_inputProcessingConfiguration' - The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- to use to preprocess the records before discovering the schema of the
+-- records.
+--
+-- 'inputStartingPositionConfiguration', 'discoverInputSchema_inputStartingPositionConfiguration' - Point at which you want Amazon Kinesis Analytics to start reading
+-- records from the specified streaming source discovery purposes.
+--
+-- 'resourceARN', 'discoverInputSchema_resourceARN' - Amazon Resource Name (ARN) of the streaming source.
+--
+-- 'roleARN', 'discoverInputSchema_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf.
+--
+-- 's3Configuration', 'discoverInputSchema_s3Configuration' - Specify this parameter to discover a schema from data in an Amazon S3
+-- object.
+newDiscoverInputSchema ::
+  DiscoverInputSchema
+newDiscoverInputSchema =
+  DiscoverInputSchema'
+    { inputProcessingConfiguration =
+        Prelude.Nothing,
+      inputStartingPositionConfiguration = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      roleARN = Prelude.Nothing,
+      s3Configuration = Prelude.Nothing
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- to use to preprocess the records before discovering the schema of the
+-- records.
+discoverInputSchema_inputProcessingConfiguration :: Lens.Lens' DiscoverInputSchema (Prelude.Maybe InputProcessingConfiguration)
+discoverInputSchema_inputProcessingConfiguration = Lens.lens (\DiscoverInputSchema' {inputProcessingConfiguration} -> inputProcessingConfiguration) (\s@DiscoverInputSchema' {} a -> s {inputProcessingConfiguration = a} :: DiscoverInputSchema)
+
+-- | Point at which you want Amazon Kinesis Analytics to start reading
+-- records from the specified streaming source discovery purposes.
+discoverInputSchema_inputStartingPositionConfiguration :: Lens.Lens' DiscoverInputSchema (Prelude.Maybe InputStartingPositionConfiguration)
+discoverInputSchema_inputStartingPositionConfiguration = Lens.lens (\DiscoverInputSchema' {inputStartingPositionConfiguration} -> inputStartingPositionConfiguration) (\s@DiscoverInputSchema' {} a -> s {inputStartingPositionConfiguration = a} :: DiscoverInputSchema)
+
+-- | Amazon Resource Name (ARN) of the streaming source.
+discoverInputSchema_resourceARN :: Lens.Lens' DiscoverInputSchema (Prelude.Maybe Prelude.Text)
+discoverInputSchema_resourceARN = Lens.lens (\DiscoverInputSchema' {resourceARN} -> resourceARN) (\s@DiscoverInputSchema' {} a -> s {resourceARN = a} :: DiscoverInputSchema)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf.
+discoverInputSchema_roleARN :: Lens.Lens' DiscoverInputSchema (Prelude.Maybe Prelude.Text)
+discoverInputSchema_roleARN = Lens.lens (\DiscoverInputSchema' {roleARN} -> roleARN) (\s@DiscoverInputSchema' {} a -> s {roleARN = a} :: DiscoverInputSchema)
+
+-- | Specify this parameter to discover a schema from data in an Amazon S3
+-- object.
+discoverInputSchema_s3Configuration :: Lens.Lens' DiscoverInputSchema (Prelude.Maybe S3Configuration)
+discoverInputSchema_s3Configuration = Lens.lens (\DiscoverInputSchema' {s3Configuration} -> s3Configuration) (\s@DiscoverInputSchema' {} a -> s {s3Configuration = a} :: DiscoverInputSchema)
+
+instance Core.AWSRequest DiscoverInputSchema where
+  type
+    AWSResponse DiscoverInputSchema =
+      DiscoverInputSchemaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DiscoverInputSchemaResponse'
+            Prelude.<$> (x Data..?> "InputSchema")
+            Prelude.<*> ( x
+                            Data..?> "ParsedInputRecords"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "ProcessedInputRecords"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "RawInputRecords"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DiscoverInputSchema where
+  hashWithSalt _salt DiscoverInputSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputProcessingConfiguration
+      `Prelude.hashWithSalt` inputStartingPositionConfiguration
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+      `Prelude.hashWithSalt` s3Configuration
+
+instance Prelude.NFData DiscoverInputSchema where
+  rnf DiscoverInputSchema' {..} =
+    Prelude.rnf inputProcessingConfiguration
+      `Prelude.seq` Prelude.rnf inputStartingPositionConfiguration
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+      `Prelude.seq` Prelude.rnf s3Configuration
+
+instance Data.ToHeaders DiscoverInputSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.DiscoverInputSchema" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DiscoverInputSchema where
+  toJSON DiscoverInputSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputProcessingConfiguration" Data..=)
+              Prelude.<$> inputProcessingConfiguration,
+            ("InputStartingPositionConfiguration" Data..=)
+              Prelude.<$> inputStartingPositionConfiguration,
+            ("ResourceARN" Data..=) Prelude.<$> resourceARN,
+            ("RoleARN" Data..=) Prelude.<$> roleARN,
+            ("S3Configuration" Data..=)
+              Prelude.<$> s3Configuration
+          ]
+      )
+
+instance Data.ToPath DiscoverInputSchema where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DiscoverInputSchema where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newDiscoverInputSchemaResponse' smart constructor.
+data DiscoverInputSchemaResponse = DiscoverInputSchemaResponse'
+  { -- | Schema inferred from the streaming source. It identifies the format of
+    -- the data in the streaming source and how each data element maps to
+    -- corresponding columns in the in-application stream that you can create.
+    inputSchema :: Prelude.Maybe SourceSchema,
+    -- | An array of elements, where each element corresponds to a row in a
+    -- stream record (a stream record can have more than one row).
+    parsedInputRecords :: Prelude.Maybe [[Prelude.Text]],
+    -- | Stream data that was modified by the processor specified in the
+    -- @InputProcessingConfiguration@ parameter.
+    processedInputRecords :: Prelude.Maybe [Prelude.Text],
+    -- | Raw stream data that was sampled to infer the schema.
+    rawInputRecords :: 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 'DiscoverInputSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputSchema', 'discoverInputSchemaResponse_inputSchema' - Schema inferred from the streaming source. It identifies the format of
+-- the data in the streaming source and how each data element maps to
+-- corresponding columns in the in-application stream that you can create.
+--
+-- 'parsedInputRecords', 'discoverInputSchemaResponse_parsedInputRecords' - An array of elements, where each element corresponds to a row in a
+-- stream record (a stream record can have more than one row).
+--
+-- 'processedInputRecords', 'discoverInputSchemaResponse_processedInputRecords' - Stream data that was modified by the processor specified in the
+-- @InputProcessingConfiguration@ parameter.
+--
+-- 'rawInputRecords', 'discoverInputSchemaResponse_rawInputRecords' - Raw stream data that was sampled to infer the schema.
+--
+-- 'httpStatus', 'discoverInputSchemaResponse_httpStatus' - The response's http status code.
+newDiscoverInputSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DiscoverInputSchemaResponse
+newDiscoverInputSchemaResponse pHttpStatus_ =
+  DiscoverInputSchemaResponse'
+    { inputSchema =
+        Prelude.Nothing,
+      parsedInputRecords = Prelude.Nothing,
+      processedInputRecords = Prelude.Nothing,
+      rawInputRecords = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Schema inferred from the streaming source. It identifies the format of
+-- the data in the streaming source and how each data element maps to
+-- corresponding columns in the in-application stream that you can create.
+discoverInputSchemaResponse_inputSchema :: Lens.Lens' DiscoverInputSchemaResponse (Prelude.Maybe SourceSchema)
+discoverInputSchemaResponse_inputSchema = Lens.lens (\DiscoverInputSchemaResponse' {inputSchema} -> inputSchema) (\s@DiscoverInputSchemaResponse' {} a -> s {inputSchema = a} :: DiscoverInputSchemaResponse)
+
+-- | An array of elements, where each element corresponds to a row in a
+-- stream record (a stream record can have more than one row).
+discoverInputSchemaResponse_parsedInputRecords :: Lens.Lens' DiscoverInputSchemaResponse (Prelude.Maybe [[Prelude.Text]])
+discoverInputSchemaResponse_parsedInputRecords = Lens.lens (\DiscoverInputSchemaResponse' {parsedInputRecords} -> parsedInputRecords) (\s@DiscoverInputSchemaResponse' {} a -> s {parsedInputRecords = a} :: DiscoverInputSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Stream data that was modified by the processor specified in the
+-- @InputProcessingConfiguration@ parameter.
+discoverInputSchemaResponse_processedInputRecords :: Lens.Lens' DiscoverInputSchemaResponse (Prelude.Maybe [Prelude.Text])
+discoverInputSchemaResponse_processedInputRecords = Lens.lens (\DiscoverInputSchemaResponse' {processedInputRecords} -> processedInputRecords) (\s@DiscoverInputSchemaResponse' {} a -> s {processedInputRecords = a} :: DiscoverInputSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Raw stream data that was sampled to infer the schema.
+discoverInputSchemaResponse_rawInputRecords :: Lens.Lens' DiscoverInputSchemaResponse (Prelude.Maybe [Prelude.Text])
+discoverInputSchemaResponse_rawInputRecords = Lens.lens (\DiscoverInputSchemaResponse' {rawInputRecords} -> rawInputRecords) (\s@DiscoverInputSchemaResponse' {} a -> s {rawInputRecords = a} :: DiscoverInputSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+discoverInputSchemaResponse_httpStatus :: Lens.Lens' DiscoverInputSchemaResponse Prelude.Int
+discoverInputSchemaResponse_httpStatus = Lens.lens (\DiscoverInputSchemaResponse' {httpStatus} -> httpStatus) (\s@DiscoverInputSchemaResponse' {} a -> s {httpStatus = a} :: DiscoverInputSchemaResponse)
+
+instance Prelude.NFData DiscoverInputSchemaResponse where
+  rnf DiscoverInputSchemaResponse' {..} =
+    Prelude.rnf inputSchema
+      `Prelude.seq` Prelude.rnf parsedInputRecords
+      `Prelude.seq` Prelude.rnf processedInputRecords
+      `Prelude.seq` Prelude.rnf rawInputRecords
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/Lens.hs b/gen/Amazonka/KinesisAnalytics/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Lens.hs
@@ -0,0 +1,477 @@
+{-# 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.KinesisAnalytics.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.KinesisAnalytics.Lens
+  ( -- * Operations
+
+    -- ** AddApplicationCloudWatchLoggingOption
+    addApplicationCloudWatchLoggingOption_applicationName,
+    addApplicationCloudWatchLoggingOption_currentApplicationVersionId,
+    addApplicationCloudWatchLoggingOption_cloudWatchLoggingOption,
+    addApplicationCloudWatchLoggingOptionResponse_httpStatus,
+
+    -- ** AddApplicationInput
+    addApplicationInput_applicationName,
+    addApplicationInput_currentApplicationVersionId,
+    addApplicationInput_input,
+    addApplicationInputResponse_httpStatus,
+
+    -- ** AddApplicationInputProcessingConfiguration
+    addApplicationInputProcessingConfiguration_applicationName,
+    addApplicationInputProcessingConfiguration_currentApplicationVersionId,
+    addApplicationInputProcessingConfiguration_inputId,
+    addApplicationInputProcessingConfiguration_inputProcessingConfiguration,
+    addApplicationInputProcessingConfigurationResponse_httpStatus,
+
+    -- ** AddApplicationOutput
+    addApplicationOutput_applicationName,
+    addApplicationOutput_currentApplicationVersionId,
+    addApplicationOutput_output,
+    addApplicationOutputResponse_httpStatus,
+
+    -- ** AddApplicationReferenceDataSource
+    addApplicationReferenceDataSource_applicationName,
+    addApplicationReferenceDataSource_currentApplicationVersionId,
+    addApplicationReferenceDataSource_referenceDataSource,
+    addApplicationReferenceDataSourceResponse_httpStatus,
+
+    -- ** CreateApplication
+    createApplication_applicationCode,
+    createApplication_applicationDescription,
+    createApplication_cloudWatchLoggingOptions,
+    createApplication_inputs,
+    createApplication_outputs,
+    createApplication_tags,
+    createApplication_applicationName,
+    createApplicationResponse_httpStatus,
+    createApplicationResponse_applicationSummary,
+
+    -- ** DeleteApplication
+    deleteApplication_applicationName,
+    deleteApplication_createTimestamp,
+    deleteApplicationResponse_httpStatus,
+
+    -- ** DeleteApplicationCloudWatchLoggingOption
+    deleteApplicationCloudWatchLoggingOption_applicationName,
+    deleteApplicationCloudWatchLoggingOption_currentApplicationVersionId,
+    deleteApplicationCloudWatchLoggingOption_cloudWatchLoggingOptionId,
+    deleteApplicationCloudWatchLoggingOptionResponse_httpStatus,
+
+    -- ** DeleteApplicationInputProcessingConfiguration
+    deleteApplicationInputProcessingConfiguration_applicationName,
+    deleteApplicationInputProcessingConfiguration_currentApplicationVersionId,
+    deleteApplicationInputProcessingConfiguration_inputId,
+    deleteApplicationInputProcessingConfigurationResponse_httpStatus,
+
+    -- ** DeleteApplicationOutput
+    deleteApplicationOutput_applicationName,
+    deleteApplicationOutput_currentApplicationVersionId,
+    deleteApplicationOutput_outputId,
+    deleteApplicationOutputResponse_httpStatus,
+
+    -- ** DeleteApplicationReferenceDataSource
+    deleteApplicationReferenceDataSource_applicationName,
+    deleteApplicationReferenceDataSource_currentApplicationVersionId,
+    deleteApplicationReferenceDataSource_referenceId,
+    deleteApplicationReferenceDataSourceResponse_httpStatus,
+
+    -- ** DescribeApplication
+    describeApplication_applicationName,
+    describeApplicationResponse_httpStatus,
+    describeApplicationResponse_applicationDetail,
+
+    -- ** DiscoverInputSchema
+    discoverInputSchema_inputProcessingConfiguration,
+    discoverInputSchema_inputStartingPositionConfiguration,
+    discoverInputSchema_resourceARN,
+    discoverInputSchema_roleARN,
+    discoverInputSchema_s3Configuration,
+    discoverInputSchemaResponse_inputSchema,
+    discoverInputSchemaResponse_parsedInputRecords,
+    discoverInputSchemaResponse_processedInputRecords,
+    discoverInputSchemaResponse_rawInputRecords,
+    discoverInputSchemaResponse_httpStatus,
+
+    -- ** ListApplications
+    listApplications_exclusiveStartApplicationName,
+    listApplications_limit,
+    listApplicationsResponse_httpStatus,
+    listApplicationsResponse_applicationSummaries,
+    listApplicationsResponse_hasMoreApplications,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartApplication
+    startApplication_applicationName,
+    startApplication_inputConfigurations,
+    startApplicationResponse_httpStatus,
+
+    -- ** StopApplication
+    stopApplication_applicationName,
+    stopApplicationResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateApplication
+    updateApplication_applicationName,
+    updateApplication_currentApplicationVersionId,
+    updateApplication_applicationUpdate,
+    updateApplicationResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ApplicationDetail
+    applicationDetail_applicationCode,
+    applicationDetail_applicationDescription,
+    applicationDetail_cloudWatchLoggingOptionDescriptions,
+    applicationDetail_createTimestamp,
+    applicationDetail_inputDescriptions,
+    applicationDetail_lastUpdateTimestamp,
+    applicationDetail_outputDescriptions,
+    applicationDetail_referenceDataSourceDescriptions,
+    applicationDetail_applicationName,
+    applicationDetail_applicationARN,
+    applicationDetail_applicationStatus,
+    applicationDetail_applicationVersionId,
+
+    -- ** ApplicationSummary
+    applicationSummary_applicationName,
+    applicationSummary_applicationARN,
+    applicationSummary_applicationStatus,
+
+    -- ** ApplicationUpdate
+    applicationUpdate_applicationCodeUpdate,
+    applicationUpdate_cloudWatchLoggingOptionUpdates,
+    applicationUpdate_inputUpdates,
+    applicationUpdate_outputUpdates,
+    applicationUpdate_referenceDataSourceUpdates,
+
+    -- ** CSVMappingParameters
+    cSVMappingParameters_recordRowDelimiter,
+    cSVMappingParameters_recordColumnDelimiter,
+
+    -- ** CloudWatchLoggingOption
+    cloudWatchLoggingOption_logStreamARN,
+    cloudWatchLoggingOption_roleARN,
+
+    -- ** CloudWatchLoggingOptionDescription
+    cloudWatchLoggingOptionDescription_cloudWatchLoggingOptionId,
+    cloudWatchLoggingOptionDescription_logStreamARN,
+    cloudWatchLoggingOptionDescription_roleARN,
+
+    -- ** CloudWatchLoggingOptionUpdate
+    cloudWatchLoggingOptionUpdate_logStreamARNUpdate,
+    cloudWatchLoggingOptionUpdate_roleARNUpdate,
+    cloudWatchLoggingOptionUpdate_cloudWatchLoggingOptionId,
+
+    -- ** DestinationSchema
+    destinationSchema_recordFormatType,
+
+    -- ** Input
+    input_inputParallelism,
+    input_inputProcessingConfiguration,
+    input_kinesisFirehoseInput,
+    input_kinesisStreamsInput,
+    input_namePrefix,
+    input_inputSchema,
+
+    -- ** InputConfiguration
+    inputConfiguration_id,
+    inputConfiguration_inputStartingPositionConfiguration,
+
+    -- ** InputDescription
+    inputDescription_inAppStreamNames,
+    inputDescription_inputId,
+    inputDescription_inputParallelism,
+    inputDescription_inputProcessingConfigurationDescription,
+    inputDescription_inputSchema,
+    inputDescription_inputStartingPositionConfiguration,
+    inputDescription_kinesisFirehoseInputDescription,
+    inputDescription_kinesisStreamsInputDescription,
+    inputDescription_namePrefix,
+
+    -- ** InputLambdaProcessor
+    inputLambdaProcessor_resourceARN,
+    inputLambdaProcessor_roleARN,
+
+    -- ** InputLambdaProcessorDescription
+    inputLambdaProcessorDescription_resourceARN,
+    inputLambdaProcessorDescription_roleARN,
+
+    -- ** InputLambdaProcessorUpdate
+    inputLambdaProcessorUpdate_resourceARNUpdate,
+    inputLambdaProcessorUpdate_roleARNUpdate,
+
+    -- ** InputParallelism
+    inputParallelism_count,
+
+    -- ** InputParallelismUpdate
+    inputParallelismUpdate_countUpdate,
+
+    -- ** InputProcessingConfiguration
+    inputProcessingConfiguration_inputLambdaProcessor,
+
+    -- ** InputProcessingConfigurationDescription
+    inputProcessingConfigurationDescription_inputLambdaProcessorDescription,
+
+    -- ** InputProcessingConfigurationUpdate
+    inputProcessingConfigurationUpdate_inputLambdaProcessorUpdate,
+
+    -- ** InputSchemaUpdate
+    inputSchemaUpdate_recordColumnUpdates,
+    inputSchemaUpdate_recordEncodingUpdate,
+    inputSchemaUpdate_recordFormatUpdate,
+
+    -- ** InputStartingPositionConfiguration
+    inputStartingPositionConfiguration_inputStartingPosition,
+
+    -- ** InputUpdate
+    inputUpdate_inputParallelismUpdate,
+    inputUpdate_inputProcessingConfigurationUpdate,
+    inputUpdate_inputSchemaUpdate,
+    inputUpdate_kinesisFirehoseInputUpdate,
+    inputUpdate_kinesisStreamsInputUpdate,
+    inputUpdate_namePrefixUpdate,
+    inputUpdate_inputId,
+
+    -- ** JSONMappingParameters
+    jSONMappingParameters_recordRowPath,
+
+    -- ** KinesisFirehoseInput
+    kinesisFirehoseInput_resourceARN,
+    kinesisFirehoseInput_roleARN,
+
+    -- ** KinesisFirehoseInputDescription
+    kinesisFirehoseInputDescription_resourceARN,
+    kinesisFirehoseInputDescription_roleARN,
+
+    -- ** KinesisFirehoseInputUpdate
+    kinesisFirehoseInputUpdate_resourceARNUpdate,
+    kinesisFirehoseInputUpdate_roleARNUpdate,
+
+    -- ** KinesisFirehoseOutput
+    kinesisFirehoseOutput_resourceARN,
+    kinesisFirehoseOutput_roleARN,
+
+    -- ** KinesisFirehoseOutputDescription
+    kinesisFirehoseOutputDescription_resourceARN,
+    kinesisFirehoseOutputDescription_roleARN,
+
+    -- ** KinesisFirehoseOutputUpdate
+    kinesisFirehoseOutputUpdate_resourceARNUpdate,
+    kinesisFirehoseOutputUpdate_roleARNUpdate,
+
+    -- ** KinesisStreamsInput
+    kinesisStreamsInput_resourceARN,
+    kinesisStreamsInput_roleARN,
+
+    -- ** KinesisStreamsInputDescription
+    kinesisStreamsInputDescription_resourceARN,
+    kinesisStreamsInputDescription_roleARN,
+
+    -- ** KinesisStreamsInputUpdate
+    kinesisStreamsInputUpdate_resourceARNUpdate,
+    kinesisStreamsInputUpdate_roleARNUpdate,
+
+    -- ** KinesisStreamsOutput
+    kinesisStreamsOutput_resourceARN,
+    kinesisStreamsOutput_roleARN,
+
+    -- ** KinesisStreamsOutputDescription
+    kinesisStreamsOutputDescription_resourceARN,
+    kinesisStreamsOutputDescription_roleARN,
+
+    -- ** KinesisStreamsOutputUpdate
+    kinesisStreamsOutputUpdate_resourceARNUpdate,
+    kinesisStreamsOutputUpdate_roleARNUpdate,
+
+    -- ** LambdaOutput
+    lambdaOutput_resourceARN,
+    lambdaOutput_roleARN,
+
+    -- ** LambdaOutputDescription
+    lambdaOutputDescription_resourceARN,
+    lambdaOutputDescription_roleARN,
+
+    -- ** LambdaOutputUpdate
+    lambdaOutputUpdate_resourceARNUpdate,
+    lambdaOutputUpdate_roleARNUpdate,
+
+    -- ** MappingParameters
+    mappingParameters_cSVMappingParameters,
+    mappingParameters_jSONMappingParameters,
+
+    -- ** Output
+    output_kinesisFirehoseOutput,
+    output_kinesisStreamsOutput,
+    output_lambdaOutput,
+    output_name,
+    output_destinationSchema,
+
+    -- ** OutputDescription
+    outputDescription_destinationSchema,
+    outputDescription_kinesisFirehoseOutputDescription,
+    outputDescription_kinesisStreamsOutputDescription,
+    outputDescription_lambdaOutputDescription,
+    outputDescription_name,
+    outputDescription_outputId,
+
+    -- ** OutputUpdate
+    outputUpdate_destinationSchemaUpdate,
+    outputUpdate_kinesisFirehoseOutputUpdate,
+    outputUpdate_kinesisStreamsOutputUpdate,
+    outputUpdate_lambdaOutputUpdate,
+    outputUpdate_nameUpdate,
+    outputUpdate_outputId,
+
+    -- ** RecordColumn
+    recordColumn_mapping,
+    recordColumn_name,
+    recordColumn_sqlType,
+
+    -- ** RecordFormat
+    recordFormat_mappingParameters,
+    recordFormat_recordFormatType,
+
+    -- ** ReferenceDataSource
+    referenceDataSource_s3ReferenceDataSource,
+    referenceDataSource_tableName,
+    referenceDataSource_referenceSchema,
+
+    -- ** ReferenceDataSourceDescription
+    referenceDataSourceDescription_referenceSchema,
+    referenceDataSourceDescription_referenceId,
+    referenceDataSourceDescription_tableName,
+    referenceDataSourceDescription_s3ReferenceDataSourceDescription,
+
+    -- ** ReferenceDataSourceUpdate
+    referenceDataSourceUpdate_referenceSchemaUpdate,
+    referenceDataSourceUpdate_s3ReferenceDataSourceUpdate,
+    referenceDataSourceUpdate_tableNameUpdate,
+    referenceDataSourceUpdate_referenceId,
+
+    -- ** S3Configuration
+    s3Configuration_roleARN,
+    s3Configuration_bucketARN,
+    s3Configuration_fileKey,
+
+    -- ** S3ReferenceDataSource
+    s3ReferenceDataSource_bucketARN,
+    s3ReferenceDataSource_fileKey,
+    s3ReferenceDataSource_referenceRoleARN,
+
+    -- ** S3ReferenceDataSourceDescription
+    s3ReferenceDataSourceDescription_bucketARN,
+    s3ReferenceDataSourceDescription_fileKey,
+    s3ReferenceDataSourceDescription_referenceRoleARN,
+
+    -- ** S3ReferenceDataSourceUpdate
+    s3ReferenceDataSourceUpdate_bucketARNUpdate,
+    s3ReferenceDataSourceUpdate_fileKeyUpdate,
+    s3ReferenceDataSourceUpdate_referenceRoleARNUpdate,
+
+    -- ** SourceSchema
+    sourceSchema_recordEncoding,
+    sourceSchema_recordFormat,
+    sourceSchema_recordColumns,
+
+    -- ** Tag
+    tag_value,
+    tag_key,
+  )
+where
+
+import Amazonka.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.AddApplicationInput
+import Amazonka.KinesisAnalytics.AddApplicationInputProcessingConfiguration
+import Amazonka.KinesisAnalytics.AddApplicationOutput
+import Amazonka.KinesisAnalytics.AddApplicationReferenceDataSource
+import Amazonka.KinesisAnalytics.CreateApplication
+import Amazonka.KinesisAnalytics.DeleteApplication
+import Amazonka.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
+import Amazonka.KinesisAnalytics.DeleteApplicationOutput
+import Amazonka.KinesisAnalytics.DeleteApplicationReferenceDataSource
+import Amazonka.KinesisAnalytics.DescribeApplication
+import Amazonka.KinesisAnalytics.DiscoverInputSchema
+import Amazonka.KinesisAnalytics.ListApplications
+import Amazonka.KinesisAnalytics.ListTagsForResource
+import Amazonka.KinesisAnalytics.StartApplication
+import Amazonka.KinesisAnalytics.StopApplication
+import Amazonka.KinesisAnalytics.TagResource
+import Amazonka.KinesisAnalytics.Types.ApplicationDetail
+import Amazonka.KinesisAnalytics.Types.ApplicationSummary
+import Amazonka.KinesisAnalytics.Types.ApplicationUpdate
+import Amazonka.KinesisAnalytics.Types.CSVMappingParameters
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate
+import Amazonka.KinesisAnalytics.Types.DestinationSchema
+import Amazonka.KinesisAnalytics.Types.Input
+import Amazonka.KinesisAnalytics.Types.InputConfiguration
+import Amazonka.KinesisAnalytics.Types.InputDescription
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessor
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate
+import Amazonka.KinesisAnalytics.Types.InputParallelism
+import Amazonka.KinesisAnalytics.Types.InputParallelismUpdate
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfiguration
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationDescription
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate
+import Amazonka.KinesisAnalytics.Types.InputSchemaUpdate
+import Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration
+import Amazonka.KinesisAnalytics.Types.InputUpdate
+import Amazonka.KinesisAnalytics.Types.JSONMappingParameters
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInput
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutput
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate
+import Amazonka.KinesisAnalytics.Types.LambdaOutput
+import Amazonka.KinesisAnalytics.Types.LambdaOutputDescription
+import Amazonka.KinesisAnalytics.Types.LambdaOutputUpdate
+import Amazonka.KinesisAnalytics.Types.MappingParameters
+import Amazonka.KinesisAnalytics.Types.Output
+import Amazonka.KinesisAnalytics.Types.OutputDescription
+import Amazonka.KinesisAnalytics.Types.OutputUpdate
+import Amazonka.KinesisAnalytics.Types.RecordColumn
+import Amazonka.KinesisAnalytics.Types.RecordFormat
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSource
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceDescription
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate
+import Amazonka.KinesisAnalytics.Types.S3Configuration
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import Amazonka.KinesisAnalytics.Types.Tag
+import Amazonka.KinesisAnalytics.UntagResource
+import Amazonka.KinesisAnalytics.UpdateApplication
diff --git a/gen/Amazonka/KinesisAnalytics/ListApplications.hs b/gen/Amazonka/KinesisAnalytics/ListApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/ListApplications.hs
@@ -0,0 +1,238 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.ListApplications
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Returns a list of Amazon Kinesis Analytics applications in your account.
+-- For each application, the response includes the application name, Amazon
+-- Resource Name (ARN), and status. If the response returns the
+-- @HasMoreApplications@ value as true, you can send another request by
+-- adding the @ExclusiveStartApplicationName@ in the request body, and set
+-- the value of this to the last application name from the previous
+-- response.
+--
+-- If you want detailed information about a specific application, use
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:ListApplications@ action.
+module Amazonka.KinesisAnalytics.ListApplications
+  ( -- * Creating a Request
+    ListApplications (..),
+    newListApplications,
+
+    -- * Request Lenses
+    listApplications_exclusiveStartApplicationName,
+    listApplications_limit,
+
+    -- * Destructuring the Response
+    ListApplicationsResponse (..),
+    newListApplicationsResponse,
+
+    -- * Response Lenses
+    listApplicationsResponse_httpStatus,
+    listApplicationsResponse_applicationSummaries,
+    listApplicationsResponse_hasMoreApplications,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newListApplications' smart constructor.
+data ListApplications = ListApplications'
+  { -- | Name of the application to start the list with. When using pagination to
+    -- retrieve the list, you don\'t need to specify this parameter in the
+    -- first request. However, in subsequent requests, you add the last
+    -- application name from the previous response to get the next page of
+    -- applications.
+    exclusiveStartApplicationName :: Prelude.Maybe Prelude.Text,
+    -- | Maximum number of applications to list.
+    limit :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exclusiveStartApplicationName', 'listApplications_exclusiveStartApplicationName' - Name of the application to start the list with. When using pagination to
+-- retrieve the list, you don\'t need to specify this parameter in the
+-- first request. However, in subsequent requests, you add the last
+-- application name from the previous response to get the next page of
+-- applications.
+--
+-- 'limit', 'listApplications_limit' - Maximum number of applications to list.
+newListApplications ::
+  ListApplications
+newListApplications =
+  ListApplications'
+    { exclusiveStartApplicationName =
+        Prelude.Nothing,
+      limit = Prelude.Nothing
+    }
+
+-- | Name of the application to start the list with. When using pagination to
+-- retrieve the list, you don\'t need to specify this parameter in the
+-- first request. However, in subsequent requests, you add the last
+-- application name from the previous response to get the next page of
+-- applications.
+listApplications_exclusiveStartApplicationName :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Text)
+listApplications_exclusiveStartApplicationName = Lens.lens (\ListApplications' {exclusiveStartApplicationName} -> exclusiveStartApplicationName) (\s@ListApplications' {} a -> s {exclusiveStartApplicationName = a} :: ListApplications)
+
+-- | Maximum number of applications to list.
+listApplications_limit :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Natural)
+listApplications_limit = Lens.lens (\ListApplications' {limit} -> limit) (\s@ListApplications' {} a -> s {limit = a} :: ListApplications)
+
+instance Core.AWSRequest ListApplications where
+  type
+    AWSResponse ListApplications =
+      ListApplicationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListApplicationsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ApplicationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:> "HasMoreApplications")
+      )
+
+instance Prelude.Hashable ListApplications where
+  hashWithSalt _salt ListApplications' {..} =
+    _salt
+      `Prelude.hashWithSalt` exclusiveStartApplicationName
+      `Prelude.hashWithSalt` limit
+
+instance Prelude.NFData ListApplications where
+  rnf ListApplications' {..} =
+    Prelude.rnf exclusiveStartApplicationName
+      `Prelude.seq` Prelude.rnf limit
+
+instance Data.ToHeaders ListApplications where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.ListApplications" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListApplications where
+  toJSON ListApplications' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExclusiveStartApplicationName" Data..=)
+              Prelude.<$> exclusiveStartApplicationName,
+            ("Limit" Data..=) Prelude.<$> limit
+          ]
+      )
+
+instance Data.ToPath ListApplications where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListApplications where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newListApplicationsResponse' smart constructor.
+data ListApplicationsResponse = ListApplicationsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | List of @ApplicationSummary@ objects.
+    applicationSummaries :: [ApplicationSummary],
+    -- | Returns true if there are more applications to retrieve.
+    hasMoreApplications :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplicationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listApplicationsResponse_httpStatus' - The response's http status code.
+--
+-- 'applicationSummaries', 'listApplicationsResponse_applicationSummaries' - List of @ApplicationSummary@ objects.
+--
+-- 'hasMoreApplications', 'listApplicationsResponse_hasMoreApplications' - Returns true if there are more applications to retrieve.
+newListApplicationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hasMoreApplications'
+  Prelude.Bool ->
+  ListApplicationsResponse
+newListApplicationsResponse
+  pHttpStatus_
+  pHasMoreApplications_ =
+    ListApplicationsResponse'
+      { httpStatus =
+          pHttpStatus_,
+        applicationSummaries = Prelude.mempty,
+        hasMoreApplications = pHasMoreApplications_
+      }
+
+-- | The response's http status code.
+listApplicationsResponse_httpStatus :: Lens.Lens' ListApplicationsResponse Prelude.Int
+listApplicationsResponse_httpStatus = Lens.lens (\ListApplicationsResponse' {httpStatus} -> httpStatus) (\s@ListApplicationsResponse' {} a -> s {httpStatus = a} :: ListApplicationsResponse)
+
+-- | List of @ApplicationSummary@ objects.
+listApplicationsResponse_applicationSummaries :: Lens.Lens' ListApplicationsResponse [ApplicationSummary]
+listApplicationsResponse_applicationSummaries = Lens.lens (\ListApplicationsResponse' {applicationSummaries} -> applicationSummaries) (\s@ListApplicationsResponse' {} a -> s {applicationSummaries = a} :: ListApplicationsResponse) Prelude.. Lens.coerced
+
+-- | Returns true if there are more applications to retrieve.
+listApplicationsResponse_hasMoreApplications :: Lens.Lens' ListApplicationsResponse Prelude.Bool
+listApplicationsResponse_hasMoreApplications = Lens.lens (\ListApplicationsResponse' {hasMoreApplications} -> hasMoreApplications) (\s@ListApplicationsResponse' {} a -> s {hasMoreApplications = a} :: ListApplicationsResponse)
+
+instance Prelude.NFData ListApplicationsResponse where
+  rnf ListApplicationsResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf applicationSummaries
+      `Prelude.seq` Prelude.rnf hasMoreApplications
diff --git a/gen/Amazonka/KinesisAnalytics/ListTagsForResource.hs b/gen/Amazonka/KinesisAnalytics/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/ListTagsForResource.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.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 list of key-value tags assigned to the application. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+module Amazonka.KinesisAnalytics.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+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 ARN of the application for which to retrieve tags.
+    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 ARN of the application for which to retrieve tags.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource' {resourceARN = pResourceARN_}
+
+-- | The ARN of the application for which to retrieve tags.
+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.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceARN
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceARN
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ResourceARN" Data..= resourceARN)]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The key-value tags assigned to the application.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The key-value tags assigned to the application.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The key-value tags assigned to the application.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/StartApplication.hs b/gen/Amazonka/KinesisAnalytics/StartApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/StartApplication.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.StartApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Starts the specified Amazon Kinesis Analytics application. After
+-- creating an application, you must exclusively call this operation to
+-- start your application.
+--
+-- After the application starts, it begins consuming the input data,
+-- processes it, and writes the output to the configured destination.
+--
+-- The application status must be @READY@ for you to start an application.
+-- You can get the application status in the console or using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+--
+-- After you start the application, you can stop the application from
+-- processing the input by calling the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_StopApplication.html StopApplication>
+-- operation.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:StartApplication@ action.
+module Amazonka.KinesisAnalytics.StartApplication
+  ( -- * Creating a Request
+    StartApplication (..),
+    newStartApplication,
+
+    -- * Request Lenses
+    startApplication_applicationName,
+    startApplication_inputConfigurations,
+
+    -- * Destructuring the Response
+    StartApplicationResponse (..),
+    newStartApplicationResponse,
+
+    -- * Response Lenses
+    startApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newStartApplication' smart constructor.
+data StartApplication = StartApplication'
+  { -- | Name of the application.
+    applicationName :: Prelude.Text,
+    -- | Identifies the specific input, by ID, that the application starts
+    -- consuming. Amazon Kinesis Analytics starts reading the streaming source
+    -- associated with the input. You can also specify where in the streaming
+    -- source you want Amazon Kinesis Analytics to start reading.
+    inputConfigurations :: [InputConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'startApplication_applicationName' - Name of the application.
+--
+-- 'inputConfigurations', 'startApplication_inputConfigurations' - Identifies the specific input, by ID, that the application starts
+-- consuming. Amazon Kinesis Analytics starts reading the streaming source
+-- associated with the input. You can also specify where in the streaming
+-- source you want Amazon Kinesis Analytics to start reading.
+newStartApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  StartApplication
+newStartApplication pApplicationName_ =
+  StartApplication'
+    { applicationName =
+        pApplicationName_,
+      inputConfigurations = Prelude.mempty
+    }
+
+-- | Name of the application.
+startApplication_applicationName :: Lens.Lens' StartApplication Prelude.Text
+startApplication_applicationName = Lens.lens (\StartApplication' {applicationName} -> applicationName) (\s@StartApplication' {} a -> s {applicationName = a} :: StartApplication)
+
+-- | Identifies the specific input, by ID, that the application starts
+-- consuming. Amazon Kinesis Analytics starts reading the streaming source
+-- associated with the input. You can also specify where in the streaming
+-- source you want Amazon Kinesis Analytics to start reading.
+startApplication_inputConfigurations :: Lens.Lens' StartApplication [InputConfiguration]
+startApplication_inputConfigurations = Lens.lens (\StartApplication' {inputConfigurations} -> inputConfigurations) (\s@StartApplication' {} a -> s {inputConfigurations = a} :: StartApplication) Prelude.. Lens.coerced
+
+instance Core.AWSRequest StartApplication where
+  type
+    AWSResponse StartApplication =
+      StartApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StartApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartApplication where
+  hashWithSalt _salt StartApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` inputConfigurations
+
+instance Prelude.NFData StartApplication where
+  rnf StartApplication' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf inputConfigurations
+
+instance Data.ToHeaders StartApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.StartApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartApplication where
+  toJSON StartApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ("InputConfigurations" Data..= inputConfigurations)
+          ]
+      )
+
+instance Data.ToPath StartApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newStartApplicationResponse' smart constructor.
+data StartApplicationResponse = StartApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startApplicationResponse_httpStatus' - The response's http status code.
+newStartApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartApplicationResponse
+newStartApplicationResponse pHttpStatus_ =
+  StartApplicationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+startApplicationResponse_httpStatus :: Lens.Lens' StartApplicationResponse Prelude.Int
+startApplicationResponse_httpStatus = Lens.lens (\StartApplicationResponse' {httpStatus} -> httpStatus) (\s@StartApplicationResponse' {} a -> s {httpStatus = a} :: StartApplicationResponse)
+
+instance Prelude.NFData StartApplicationResponse where
+  rnf StartApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/StopApplication.hs b/gen/Amazonka/KinesisAnalytics/StopApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/StopApplication.hs
@@ -0,0 +1,177 @@
+{-# 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.KinesisAnalytics.StopApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Stops the application from processing input data. You can stop an
+-- application only if it is in the running state. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to find the application state. After the application is
+-- stopped, Amazon Kinesis Analytics stops reading data from the input, the
+-- application stops processing data, and there is no output written to the
+-- destination.
+--
+-- This operation requires permissions to perform the
+-- @kinesisanalytics:StopApplication@ action.
+module Amazonka.KinesisAnalytics.StopApplication
+  ( -- * Creating a Request
+    StopApplication (..),
+    newStopApplication,
+
+    -- * Request Lenses
+    stopApplication_applicationName,
+
+    -- * Destructuring the Response
+    StopApplicationResponse (..),
+    newStopApplicationResponse,
+
+    -- * Response Lenses
+    stopApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newStopApplication' smart constructor.
+data StopApplication = StopApplication'
+  { -- | Name of the running application to stop.
+    applicationName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'stopApplication_applicationName' - Name of the running application to stop.
+newStopApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  StopApplication
+newStopApplication pApplicationName_ =
+  StopApplication'
+    { applicationName =
+        pApplicationName_
+    }
+
+-- | Name of the running application to stop.
+stopApplication_applicationName :: Lens.Lens' StopApplication Prelude.Text
+stopApplication_applicationName = Lens.lens (\StopApplication' {applicationName} -> applicationName) (\s@StopApplication' {} a -> s {applicationName = a} :: StopApplication)
+
+instance Core.AWSRequest StopApplication where
+  type
+    AWSResponse StopApplication =
+      StopApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopApplication where
+  hashWithSalt _salt StopApplication' {..} =
+    _salt `Prelude.hashWithSalt` applicationName
+
+instance Prelude.NFData StopApplication where
+  rnf StopApplication' {..} =
+    Prelude.rnf applicationName
+
+instance Data.ToHeaders StopApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.StopApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopApplication where
+  toJSON StopApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName)
+          ]
+      )
+
+instance Data.ToPath StopApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- |
+--
+-- /See:/ 'newStopApplicationResponse' smart constructor.
+data StopApplicationResponse = StopApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopApplicationResponse_httpStatus' - The response's http status code.
+newStopApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopApplicationResponse
+newStopApplicationResponse pHttpStatus_ =
+  StopApplicationResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+stopApplicationResponse_httpStatus :: Lens.Lens' StopApplicationResponse Prelude.Int
+stopApplicationResponse_httpStatus = Lens.lens (\StopApplicationResponse' {httpStatus} -> httpStatus) (\s@StopApplicationResponse' {} a -> s {httpStatus = a} :: StopApplicationResponse)
+
+instance Prelude.NFData StopApplicationResponse where
+  rnf StopApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/TagResource.hs b/gen/Amazonka/KinesisAnalytics/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/TagResource.hs
@@ -0,0 +1,174 @@
+{-# 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.KinesisAnalytics.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds one or more key-value tags to a Kinesis Analytics application. Note
+-- that the maximum number of application tags includes system tags. The
+-- maximum number of user-defined application tags is 50. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+module Amazonka.KinesisAnalytics.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+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 ARN of the application to assign the tags.
+    resourceARN :: Prelude.Text,
+    -- | The key-value tags to assign to the application.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The ARN of the application to assign the tags.
+--
+-- 'tags', 'tagResource_tags' - The key-value tags to assign to the application.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagResource
+newTagResource pResourceARN_ pTags_ =
+  TagResource'
+    { resourceARN = pResourceARN_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The ARN of the application to assign the tags.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource)
+
+-- | The key-value tags to assign to the application.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.NonEmpty Tag)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.TagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /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/KinesisAnalytics/Types.hs b/gen/Amazonka/KinesisAnalytics/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types.hs
@@ -0,0 +1,634 @@
+{-# 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.KinesisAnalytics.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.KinesisAnalytics.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _CodeValidationException,
+    _ConcurrentModificationException,
+    _InvalidApplicationConfigurationException,
+    _InvalidArgumentException,
+    _LimitExceededException,
+    _ResourceInUseException,
+    _ResourceNotFoundException,
+    _ResourceProvisionedThroughputExceededException,
+    _ServiceUnavailableException,
+    _TooManyTagsException,
+    _UnableToDetectSchemaException,
+    _UnsupportedOperationException,
+
+    -- * ApplicationStatus
+    ApplicationStatus (..),
+
+    -- * InputStartingPosition
+    InputStartingPosition (..),
+
+    -- * RecordFormatType
+    RecordFormatType (..),
+
+    -- * ApplicationDetail
+    ApplicationDetail (..),
+    newApplicationDetail,
+    applicationDetail_applicationCode,
+    applicationDetail_applicationDescription,
+    applicationDetail_cloudWatchLoggingOptionDescriptions,
+    applicationDetail_createTimestamp,
+    applicationDetail_inputDescriptions,
+    applicationDetail_lastUpdateTimestamp,
+    applicationDetail_outputDescriptions,
+    applicationDetail_referenceDataSourceDescriptions,
+    applicationDetail_applicationName,
+    applicationDetail_applicationARN,
+    applicationDetail_applicationStatus,
+    applicationDetail_applicationVersionId,
+
+    -- * ApplicationSummary
+    ApplicationSummary (..),
+    newApplicationSummary,
+    applicationSummary_applicationName,
+    applicationSummary_applicationARN,
+    applicationSummary_applicationStatus,
+
+    -- * ApplicationUpdate
+    ApplicationUpdate (..),
+    newApplicationUpdate,
+    applicationUpdate_applicationCodeUpdate,
+    applicationUpdate_cloudWatchLoggingOptionUpdates,
+    applicationUpdate_inputUpdates,
+    applicationUpdate_outputUpdates,
+    applicationUpdate_referenceDataSourceUpdates,
+
+    -- * CSVMappingParameters
+    CSVMappingParameters (..),
+    newCSVMappingParameters,
+    cSVMappingParameters_recordRowDelimiter,
+    cSVMappingParameters_recordColumnDelimiter,
+
+    -- * CloudWatchLoggingOption
+    CloudWatchLoggingOption (..),
+    newCloudWatchLoggingOption,
+    cloudWatchLoggingOption_logStreamARN,
+    cloudWatchLoggingOption_roleARN,
+
+    -- * CloudWatchLoggingOptionDescription
+    CloudWatchLoggingOptionDescription (..),
+    newCloudWatchLoggingOptionDescription,
+    cloudWatchLoggingOptionDescription_cloudWatchLoggingOptionId,
+    cloudWatchLoggingOptionDescription_logStreamARN,
+    cloudWatchLoggingOptionDescription_roleARN,
+
+    -- * CloudWatchLoggingOptionUpdate
+    CloudWatchLoggingOptionUpdate (..),
+    newCloudWatchLoggingOptionUpdate,
+    cloudWatchLoggingOptionUpdate_logStreamARNUpdate,
+    cloudWatchLoggingOptionUpdate_roleARNUpdate,
+    cloudWatchLoggingOptionUpdate_cloudWatchLoggingOptionId,
+
+    -- * DestinationSchema
+    DestinationSchema (..),
+    newDestinationSchema,
+    destinationSchema_recordFormatType,
+
+    -- * Input
+    Input (..),
+    newInput,
+    input_inputParallelism,
+    input_inputProcessingConfiguration,
+    input_kinesisFirehoseInput,
+    input_kinesisStreamsInput,
+    input_namePrefix,
+    input_inputSchema,
+
+    -- * InputConfiguration
+    InputConfiguration (..),
+    newInputConfiguration,
+    inputConfiguration_id,
+    inputConfiguration_inputStartingPositionConfiguration,
+
+    -- * InputDescription
+    InputDescription (..),
+    newInputDescription,
+    inputDescription_inAppStreamNames,
+    inputDescription_inputId,
+    inputDescription_inputParallelism,
+    inputDescription_inputProcessingConfigurationDescription,
+    inputDescription_inputSchema,
+    inputDescription_inputStartingPositionConfiguration,
+    inputDescription_kinesisFirehoseInputDescription,
+    inputDescription_kinesisStreamsInputDescription,
+    inputDescription_namePrefix,
+
+    -- * InputLambdaProcessor
+    InputLambdaProcessor (..),
+    newInputLambdaProcessor,
+    inputLambdaProcessor_resourceARN,
+    inputLambdaProcessor_roleARN,
+
+    -- * InputLambdaProcessorDescription
+    InputLambdaProcessorDescription (..),
+    newInputLambdaProcessorDescription,
+    inputLambdaProcessorDescription_resourceARN,
+    inputLambdaProcessorDescription_roleARN,
+
+    -- * InputLambdaProcessorUpdate
+    InputLambdaProcessorUpdate (..),
+    newInputLambdaProcessorUpdate,
+    inputLambdaProcessorUpdate_resourceARNUpdate,
+    inputLambdaProcessorUpdate_roleARNUpdate,
+
+    -- * InputParallelism
+    InputParallelism (..),
+    newInputParallelism,
+    inputParallelism_count,
+
+    -- * InputParallelismUpdate
+    InputParallelismUpdate (..),
+    newInputParallelismUpdate,
+    inputParallelismUpdate_countUpdate,
+
+    -- * InputProcessingConfiguration
+    InputProcessingConfiguration (..),
+    newInputProcessingConfiguration,
+    inputProcessingConfiguration_inputLambdaProcessor,
+
+    -- * InputProcessingConfigurationDescription
+    InputProcessingConfigurationDescription (..),
+    newInputProcessingConfigurationDescription,
+    inputProcessingConfigurationDescription_inputLambdaProcessorDescription,
+
+    -- * InputProcessingConfigurationUpdate
+    InputProcessingConfigurationUpdate (..),
+    newInputProcessingConfigurationUpdate,
+    inputProcessingConfigurationUpdate_inputLambdaProcessorUpdate,
+
+    -- * InputSchemaUpdate
+    InputSchemaUpdate (..),
+    newInputSchemaUpdate,
+    inputSchemaUpdate_recordColumnUpdates,
+    inputSchemaUpdate_recordEncodingUpdate,
+    inputSchemaUpdate_recordFormatUpdate,
+
+    -- * InputStartingPositionConfiguration
+    InputStartingPositionConfiguration (..),
+    newInputStartingPositionConfiguration,
+    inputStartingPositionConfiguration_inputStartingPosition,
+
+    -- * InputUpdate
+    InputUpdate (..),
+    newInputUpdate,
+    inputUpdate_inputParallelismUpdate,
+    inputUpdate_inputProcessingConfigurationUpdate,
+    inputUpdate_inputSchemaUpdate,
+    inputUpdate_kinesisFirehoseInputUpdate,
+    inputUpdate_kinesisStreamsInputUpdate,
+    inputUpdate_namePrefixUpdate,
+    inputUpdate_inputId,
+
+    -- * JSONMappingParameters
+    JSONMappingParameters (..),
+    newJSONMappingParameters,
+    jSONMappingParameters_recordRowPath,
+
+    -- * KinesisFirehoseInput
+    KinesisFirehoseInput (..),
+    newKinesisFirehoseInput,
+    kinesisFirehoseInput_resourceARN,
+    kinesisFirehoseInput_roleARN,
+
+    -- * KinesisFirehoseInputDescription
+    KinesisFirehoseInputDescription (..),
+    newKinesisFirehoseInputDescription,
+    kinesisFirehoseInputDescription_resourceARN,
+    kinesisFirehoseInputDescription_roleARN,
+
+    -- * KinesisFirehoseInputUpdate
+    KinesisFirehoseInputUpdate (..),
+    newKinesisFirehoseInputUpdate,
+    kinesisFirehoseInputUpdate_resourceARNUpdate,
+    kinesisFirehoseInputUpdate_roleARNUpdate,
+
+    -- * KinesisFirehoseOutput
+    KinesisFirehoseOutput (..),
+    newKinesisFirehoseOutput,
+    kinesisFirehoseOutput_resourceARN,
+    kinesisFirehoseOutput_roleARN,
+
+    -- * KinesisFirehoseOutputDescription
+    KinesisFirehoseOutputDescription (..),
+    newKinesisFirehoseOutputDescription,
+    kinesisFirehoseOutputDescription_resourceARN,
+    kinesisFirehoseOutputDescription_roleARN,
+
+    -- * KinesisFirehoseOutputUpdate
+    KinesisFirehoseOutputUpdate (..),
+    newKinesisFirehoseOutputUpdate,
+    kinesisFirehoseOutputUpdate_resourceARNUpdate,
+    kinesisFirehoseOutputUpdate_roleARNUpdate,
+
+    -- * KinesisStreamsInput
+    KinesisStreamsInput (..),
+    newKinesisStreamsInput,
+    kinesisStreamsInput_resourceARN,
+    kinesisStreamsInput_roleARN,
+
+    -- * KinesisStreamsInputDescription
+    KinesisStreamsInputDescription (..),
+    newKinesisStreamsInputDescription,
+    kinesisStreamsInputDescription_resourceARN,
+    kinesisStreamsInputDescription_roleARN,
+
+    -- * KinesisStreamsInputUpdate
+    KinesisStreamsInputUpdate (..),
+    newKinesisStreamsInputUpdate,
+    kinesisStreamsInputUpdate_resourceARNUpdate,
+    kinesisStreamsInputUpdate_roleARNUpdate,
+
+    -- * KinesisStreamsOutput
+    KinesisStreamsOutput (..),
+    newKinesisStreamsOutput,
+    kinesisStreamsOutput_resourceARN,
+    kinesisStreamsOutput_roleARN,
+
+    -- * KinesisStreamsOutputDescription
+    KinesisStreamsOutputDescription (..),
+    newKinesisStreamsOutputDescription,
+    kinesisStreamsOutputDescription_resourceARN,
+    kinesisStreamsOutputDescription_roleARN,
+
+    -- * KinesisStreamsOutputUpdate
+    KinesisStreamsOutputUpdate (..),
+    newKinesisStreamsOutputUpdate,
+    kinesisStreamsOutputUpdate_resourceARNUpdate,
+    kinesisStreamsOutputUpdate_roleARNUpdate,
+
+    -- * LambdaOutput
+    LambdaOutput (..),
+    newLambdaOutput,
+    lambdaOutput_resourceARN,
+    lambdaOutput_roleARN,
+
+    -- * LambdaOutputDescription
+    LambdaOutputDescription (..),
+    newLambdaOutputDescription,
+    lambdaOutputDescription_resourceARN,
+    lambdaOutputDescription_roleARN,
+
+    -- * LambdaOutputUpdate
+    LambdaOutputUpdate (..),
+    newLambdaOutputUpdate,
+    lambdaOutputUpdate_resourceARNUpdate,
+    lambdaOutputUpdate_roleARNUpdate,
+
+    -- * MappingParameters
+    MappingParameters (..),
+    newMappingParameters,
+    mappingParameters_cSVMappingParameters,
+    mappingParameters_jSONMappingParameters,
+
+    -- * Output
+    Output (..),
+    newOutput,
+    output_kinesisFirehoseOutput,
+    output_kinesisStreamsOutput,
+    output_lambdaOutput,
+    output_name,
+    output_destinationSchema,
+
+    -- * OutputDescription
+    OutputDescription (..),
+    newOutputDescription,
+    outputDescription_destinationSchema,
+    outputDescription_kinesisFirehoseOutputDescription,
+    outputDescription_kinesisStreamsOutputDescription,
+    outputDescription_lambdaOutputDescription,
+    outputDescription_name,
+    outputDescription_outputId,
+
+    -- * OutputUpdate
+    OutputUpdate (..),
+    newOutputUpdate,
+    outputUpdate_destinationSchemaUpdate,
+    outputUpdate_kinesisFirehoseOutputUpdate,
+    outputUpdate_kinesisStreamsOutputUpdate,
+    outputUpdate_lambdaOutputUpdate,
+    outputUpdate_nameUpdate,
+    outputUpdate_outputId,
+
+    -- * RecordColumn
+    RecordColumn (..),
+    newRecordColumn,
+    recordColumn_mapping,
+    recordColumn_name,
+    recordColumn_sqlType,
+
+    -- * RecordFormat
+    RecordFormat (..),
+    newRecordFormat,
+    recordFormat_mappingParameters,
+    recordFormat_recordFormatType,
+
+    -- * ReferenceDataSource
+    ReferenceDataSource (..),
+    newReferenceDataSource,
+    referenceDataSource_s3ReferenceDataSource,
+    referenceDataSource_tableName,
+    referenceDataSource_referenceSchema,
+
+    -- * ReferenceDataSourceDescription
+    ReferenceDataSourceDescription (..),
+    newReferenceDataSourceDescription,
+    referenceDataSourceDescription_referenceSchema,
+    referenceDataSourceDescription_referenceId,
+    referenceDataSourceDescription_tableName,
+    referenceDataSourceDescription_s3ReferenceDataSourceDescription,
+
+    -- * ReferenceDataSourceUpdate
+    ReferenceDataSourceUpdate (..),
+    newReferenceDataSourceUpdate,
+    referenceDataSourceUpdate_referenceSchemaUpdate,
+    referenceDataSourceUpdate_s3ReferenceDataSourceUpdate,
+    referenceDataSourceUpdate_tableNameUpdate,
+    referenceDataSourceUpdate_referenceId,
+
+    -- * S3Configuration
+    S3Configuration (..),
+    newS3Configuration,
+    s3Configuration_roleARN,
+    s3Configuration_bucketARN,
+    s3Configuration_fileKey,
+
+    -- * S3ReferenceDataSource
+    S3ReferenceDataSource (..),
+    newS3ReferenceDataSource,
+    s3ReferenceDataSource_bucketARN,
+    s3ReferenceDataSource_fileKey,
+    s3ReferenceDataSource_referenceRoleARN,
+
+    -- * S3ReferenceDataSourceDescription
+    S3ReferenceDataSourceDescription (..),
+    newS3ReferenceDataSourceDescription,
+    s3ReferenceDataSourceDescription_bucketARN,
+    s3ReferenceDataSourceDescription_fileKey,
+    s3ReferenceDataSourceDescription_referenceRoleARN,
+
+    -- * S3ReferenceDataSourceUpdate
+    S3ReferenceDataSourceUpdate (..),
+    newS3ReferenceDataSourceUpdate,
+    s3ReferenceDataSourceUpdate_bucketARNUpdate,
+    s3ReferenceDataSourceUpdate_fileKeyUpdate,
+    s3ReferenceDataSourceUpdate_referenceRoleARNUpdate,
+
+    -- * SourceSchema
+    SourceSchema (..),
+    newSourceSchema,
+    sourceSchema_recordEncoding,
+    sourceSchema_recordFormat,
+    sourceSchema_recordColumns,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_value,
+    tag_key,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.KinesisAnalytics.Types.ApplicationDetail
+import Amazonka.KinesisAnalytics.Types.ApplicationStatus
+import Amazonka.KinesisAnalytics.Types.ApplicationSummary
+import Amazonka.KinesisAnalytics.Types.ApplicationUpdate
+import Amazonka.KinesisAnalytics.Types.CSVMappingParameters
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOption
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate
+import Amazonka.KinesisAnalytics.Types.DestinationSchema
+import Amazonka.KinesisAnalytics.Types.Input
+import Amazonka.KinesisAnalytics.Types.InputConfiguration
+import Amazonka.KinesisAnalytics.Types.InputDescription
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessor
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate
+import Amazonka.KinesisAnalytics.Types.InputParallelism
+import Amazonka.KinesisAnalytics.Types.InputParallelismUpdate
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfiguration
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationDescription
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate
+import Amazonka.KinesisAnalytics.Types.InputSchemaUpdate
+import Amazonka.KinesisAnalytics.Types.InputStartingPosition
+import Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration
+import Amazonka.KinesisAnalytics.Types.InputUpdate
+import Amazonka.KinesisAnalytics.Types.JSONMappingParameters
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInput
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutput
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate
+import Amazonka.KinesisAnalytics.Types.LambdaOutput
+import Amazonka.KinesisAnalytics.Types.LambdaOutputDescription
+import Amazonka.KinesisAnalytics.Types.LambdaOutputUpdate
+import Amazonka.KinesisAnalytics.Types.MappingParameters
+import Amazonka.KinesisAnalytics.Types.Output
+import Amazonka.KinesisAnalytics.Types.OutputDescription
+import Amazonka.KinesisAnalytics.Types.OutputUpdate
+import Amazonka.KinesisAnalytics.Types.RecordColumn
+import Amazonka.KinesisAnalytics.Types.RecordFormat
+import Amazonka.KinesisAnalytics.Types.RecordFormatType
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSource
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceDescription
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate
+import Amazonka.KinesisAnalytics.Types.S3Configuration
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import Amazonka.KinesisAnalytics.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2015-08-14@ of the Amazon Kinesis Analytics SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "KinesisAnalytics",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "kinesisanalytics",
+      Core.signingName = "kinesisanalytics",
+      Core.version = "2015-08-14",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "KinesisAnalytics",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | User-provided application code (query) is invalid. This can be a simple
+-- syntax error.
+_CodeValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CodeValidationException =
+  Core._MatchServiceError
+    defaultService
+    "CodeValidationException"
+
+-- | Exception thrown as a result of concurrent modification to an
+-- application. For example, two individuals attempting to edit the same
+-- application at the same time.
+_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConcurrentModificationException =
+  Core._MatchServiceError
+    defaultService
+    "ConcurrentModificationException"
+
+-- | User-provided application configuration is not valid.
+_InvalidApplicationConfigurationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidApplicationConfigurationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidApplicationConfigurationException"
+
+-- | Specified input parameter value is invalid.
+_InvalidArgumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidArgumentException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidArgumentException"
+
+-- | Exceeded the number of applications allowed.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceededException"
+
+-- | Application is not available for this operation.
+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceInUseException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceInUseException"
+
+-- | Specified application can\'t be found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | Discovery failed to get a record from the streaming source because of
+-- the Amazon Kinesis Streams ProvisionedThroughputExceededException. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html GetRecords>
+-- in the Amazon Kinesis Streams API Reference.
+_ResourceProvisionedThroughputExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceProvisionedThroughputExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceProvisionedThroughputExceededException"
+
+-- | The service is unavailable. Back off and retry the operation.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+
+-- | Application created with too many tags, or too many tags added to an
+-- application. Note that the maximum number of application tags includes
+-- system tags. The maximum number of user-defined application tags is 50.
+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyTagsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyTagsException"
+
+-- | Data format is not valid. Amazon Kinesis Analytics is not able to detect
+-- schema for the given streaming source.
+_UnableToDetectSchemaException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnableToDetectSchemaException =
+  Core._MatchServiceError
+    defaultService
+    "UnableToDetectSchemaException"
+
+-- | The request was rejected because a specified parameter is not supported
+-- or a specified resource is not valid for this operation.
+_UnsupportedOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnsupportedOperationException =
+  Core._MatchServiceError
+    defaultService
+    "UnsupportedOperationException"
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ApplicationDetail.hs b/gen/Amazonka/KinesisAnalytics/Types/ApplicationDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ApplicationDetail.hs
@@ -0,0 +1,269 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.ApplicationDetail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ApplicationDetail where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.ApplicationStatus
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription
+import Amazonka.KinesisAnalytics.Types.InputDescription
+import Amazonka.KinesisAnalytics.Types.OutputDescription
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceDescription
+import qualified Amazonka.Prelude as Prelude
+
+-- | This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Provides a description of the application, including the application
+-- Amazon Resource Name (ARN), status, latest version, and input and output
+-- configuration.
+--
+-- /See:/ 'newApplicationDetail' smart constructor.
+data ApplicationDetail = ApplicationDetail'
+  { -- | Returns the application code that you provided to perform data analysis
+    -- on any of the in-application streams in your application.
+    applicationCode :: Prelude.Maybe Prelude.Text,
+    -- | Description of the application.
+    applicationDescription :: Prelude.Maybe Prelude.Text,
+    -- | Describes the CloudWatch log streams that are configured to receive
+    -- application messages. For more information about using CloudWatch log
+    -- streams with Amazon Kinesis Analytics applications, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+    cloudWatchLoggingOptionDescriptions :: Prelude.Maybe [CloudWatchLoggingOptionDescription],
+    -- | Time stamp when the application version was created.
+    createTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | Describes the application input configuration. For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+    inputDescriptions :: Prelude.Maybe [InputDescription],
+    -- | Time stamp when the application was last updated.
+    lastUpdateTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | Describes the application output configuration. For more information,
+    -- see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+    outputDescriptions :: Prelude.Maybe [OutputDescription],
+    -- | Describes reference data sources configured for the application. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+    referenceDataSourceDescriptions :: Prelude.Maybe [ReferenceDataSourceDescription],
+    -- | Name of the application.
+    applicationName :: Prelude.Text,
+    -- | ARN of the application.
+    applicationARN :: Prelude.Text,
+    -- | Status of the application.
+    applicationStatus :: ApplicationStatus,
+    -- | Provides the current application version.
+    applicationVersionId :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationCode', 'applicationDetail_applicationCode' - Returns the application code that you provided to perform data analysis
+-- on any of the in-application streams in your application.
+--
+-- 'applicationDescription', 'applicationDetail_applicationDescription' - Description of the application.
+--
+-- 'cloudWatchLoggingOptionDescriptions', 'applicationDetail_cloudWatchLoggingOptionDescriptions' - Describes the CloudWatch log streams that are configured to receive
+-- application messages. For more information about using CloudWatch log
+-- streams with Amazon Kinesis Analytics applications, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+--
+-- 'createTimestamp', 'applicationDetail_createTimestamp' - Time stamp when the application version was created.
+--
+-- 'inputDescriptions', 'applicationDetail_inputDescriptions' - Describes the application input configuration. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- 'lastUpdateTimestamp', 'applicationDetail_lastUpdateTimestamp' - Time stamp when the application was last updated.
+--
+-- 'outputDescriptions', 'applicationDetail_outputDescriptions' - Describes the application output configuration. For more information,
+-- see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+--
+-- 'referenceDataSourceDescriptions', 'applicationDetail_referenceDataSourceDescriptions' - Describes reference data sources configured for the application. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- 'applicationName', 'applicationDetail_applicationName' - Name of the application.
+--
+-- 'applicationARN', 'applicationDetail_applicationARN' - ARN of the application.
+--
+-- 'applicationStatus', 'applicationDetail_applicationStatus' - Status of the application.
+--
+-- 'applicationVersionId', 'applicationDetail_applicationVersionId' - Provides the current application version.
+newApplicationDetail ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'applicationARN'
+  Prelude.Text ->
+  -- | 'applicationStatus'
+  ApplicationStatus ->
+  -- | 'applicationVersionId'
+  Prelude.Natural ->
+  ApplicationDetail
+newApplicationDetail
+  pApplicationName_
+  pApplicationARN_
+  pApplicationStatus_
+  pApplicationVersionId_ =
+    ApplicationDetail'
+      { applicationCode =
+          Prelude.Nothing,
+        applicationDescription = Prelude.Nothing,
+        cloudWatchLoggingOptionDescriptions =
+          Prelude.Nothing,
+        createTimestamp = Prelude.Nothing,
+        inputDescriptions = Prelude.Nothing,
+        lastUpdateTimestamp = Prelude.Nothing,
+        outputDescriptions = Prelude.Nothing,
+        referenceDataSourceDescriptions = Prelude.Nothing,
+        applicationName = pApplicationName_,
+        applicationARN = pApplicationARN_,
+        applicationStatus = pApplicationStatus_,
+        applicationVersionId = pApplicationVersionId_
+      }
+
+-- | Returns the application code that you provided to perform data analysis
+-- on any of the in-application streams in your application.
+applicationDetail_applicationCode :: Lens.Lens' ApplicationDetail (Prelude.Maybe Prelude.Text)
+applicationDetail_applicationCode = Lens.lens (\ApplicationDetail' {applicationCode} -> applicationCode) (\s@ApplicationDetail' {} a -> s {applicationCode = a} :: ApplicationDetail)
+
+-- | Description of the application.
+applicationDetail_applicationDescription :: Lens.Lens' ApplicationDetail (Prelude.Maybe Prelude.Text)
+applicationDetail_applicationDescription = Lens.lens (\ApplicationDetail' {applicationDescription} -> applicationDescription) (\s@ApplicationDetail' {} a -> s {applicationDescription = a} :: ApplicationDetail)
+
+-- | Describes the CloudWatch log streams that are configured to receive
+-- application messages. For more information about using CloudWatch log
+-- streams with Amazon Kinesis Analytics applications, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs>.
+applicationDetail_cloudWatchLoggingOptionDescriptions :: Lens.Lens' ApplicationDetail (Prelude.Maybe [CloudWatchLoggingOptionDescription])
+applicationDetail_cloudWatchLoggingOptionDescriptions = Lens.lens (\ApplicationDetail' {cloudWatchLoggingOptionDescriptions} -> cloudWatchLoggingOptionDescriptions) (\s@ApplicationDetail' {} a -> s {cloudWatchLoggingOptionDescriptions = a} :: ApplicationDetail) Prelude.. Lens.mapping Lens.coerced
+
+-- | Time stamp when the application version was created.
+applicationDetail_createTimestamp :: Lens.Lens' ApplicationDetail (Prelude.Maybe Prelude.UTCTime)
+applicationDetail_createTimestamp = Lens.lens (\ApplicationDetail' {createTimestamp} -> createTimestamp) (\s@ApplicationDetail' {} a -> s {createTimestamp = a} :: ApplicationDetail) Prelude.. Lens.mapping Data._Time
+
+-- | Describes the application input configuration. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+applicationDetail_inputDescriptions :: Lens.Lens' ApplicationDetail (Prelude.Maybe [InputDescription])
+applicationDetail_inputDescriptions = Lens.lens (\ApplicationDetail' {inputDescriptions} -> inputDescriptions) (\s@ApplicationDetail' {} a -> s {inputDescriptions = a} :: ApplicationDetail) Prelude.. Lens.mapping Lens.coerced
+
+-- | Time stamp when the application was last updated.
+applicationDetail_lastUpdateTimestamp :: Lens.Lens' ApplicationDetail (Prelude.Maybe Prelude.UTCTime)
+applicationDetail_lastUpdateTimestamp = Lens.lens (\ApplicationDetail' {lastUpdateTimestamp} -> lastUpdateTimestamp) (\s@ApplicationDetail' {} a -> s {lastUpdateTimestamp = a} :: ApplicationDetail) Prelude.. Lens.mapping Data._Time
+
+-- | Describes the application output configuration. For more information,
+-- see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+applicationDetail_outputDescriptions :: Lens.Lens' ApplicationDetail (Prelude.Maybe [OutputDescription])
+applicationDetail_outputDescriptions = Lens.lens (\ApplicationDetail' {outputDescriptions} -> outputDescriptions) (\s@ApplicationDetail' {} a -> s {outputDescriptions = a} :: ApplicationDetail) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes reference data sources configured for the application. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+applicationDetail_referenceDataSourceDescriptions :: Lens.Lens' ApplicationDetail (Prelude.Maybe [ReferenceDataSourceDescription])
+applicationDetail_referenceDataSourceDescriptions = Lens.lens (\ApplicationDetail' {referenceDataSourceDescriptions} -> referenceDataSourceDescriptions) (\s@ApplicationDetail' {} a -> s {referenceDataSourceDescriptions = a} :: ApplicationDetail) Prelude.. Lens.mapping Lens.coerced
+
+-- | Name of the application.
+applicationDetail_applicationName :: Lens.Lens' ApplicationDetail Prelude.Text
+applicationDetail_applicationName = Lens.lens (\ApplicationDetail' {applicationName} -> applicationName) (\s@ApplicationDetail' {} a -> s {applicationName = a} :: ApplicationDetail)
+
+-- | ARN of the application.
+applicationDetail_applicationARN :: Lens.Lens' ApplicationDetail Prelude.Text
+applicationDetail_applicationARN = Lens.lens (\ApplicationDetail' {applicationARN} -> applicationARN) (\s@ApplicationDetail' {} a -> s {applicationARN = a} :: ApplicationDetail)
+
+-- | Status of the application.
+applicationDetail_applicationStatus :: Lens.Lens' ApplicationDetail ApplicationStatus
+applicationDetail_applicationStatus = Lens.lens (\ApplicationDetail' {applicationStatus} -> applicationStatus) (\s@ApplicationDetail' {} a -> s {applicationStatus = a} :: ApplicationDetail)
+
+-- | Provides the current application version.
+applicationDetail_applicationVersionId :: Lens.Lens' ApplicationDetail Prelude.Natural
+applicationDetail_applicationVersionId = Lens.lens (\ApplicationDetail' {applicationVersionId} -> applicationVersionId) (\s@ApplicationDetail' {} a -> s {applicationVersionId = a} :: ApplicationDetail)
+
+instance Data.FromJSON ApplicationDetail where
+  parseJSON =
+    Data.withObject
+      "ApplicationDetail"
+      ( \x ->
+          ApplicationDetail'
+            Prelude.<$> (x Data..:? "ApplicationCode")
+            Prelude.<*> (x Data..:? "ApplicationDescription")
+            Prelude.<*> ( x
+                            Data..:? "CloudWatchLoggingOptionDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CreateTimestamp")
+            Prelude.<*> ( x
+                            Data..:? "InputDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "LastUpdateTimestamp")
+            Prelude.<*> ( x
+                            Data..:? "OutputDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ReferenceDataSourceDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "ApplicationName")
+            Prelude.<*> (x Data..: "ApplicationARN")
+            Prelude.<*> (x Data..: "ApplicationStatus")
+            Prelude.<*> (x Data..: "ApplicationVersionId")
+      )
+
+instance Prelude.Hashable ApplicationDetail where
+  hashWithSalt _salt ApplicationDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationCode
+      `Prelude.hashWithSalt` applicationDescription
+      `Prelude.hashWithSalt` cloudWatchLoggingOptionDescriptions
+      `Prelude.hashWithSalt` createTimestamp
+      `Prelude.hashWithSalt` inputDescriptions
+      `Prelude.hashWithSalt` lastUpdateTimestamp
+      `Prelude.hashWithSalt` outputDescriptions
+      `Prelude.hashWithSalt` referenceDataSourceDescriptions
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` applicationARN
+      `Prelude.hashWithSalt` applicationStatus
+      `Prelude.hashWithSalt` applicationVersionId
+
+instance Prelude.NFData ApplicationDetail where
+  rnf ApplicationDetail' {..} =
+    Prelude.rnf applicationCode
+      `Prelude.seq` Prelude.rnf applicationDescription
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOptionDescriptions
+      `Prelude.seq` Prelude.rnf createTimestamp
+      `Prelude.seq` Prelude.rnf inputDescriptions
+      `Prelude.seq` Prelude.rnf lastUpdateTimestamp
+      `Prelude.seq` Prelude.rnf outputDescriptions
+      `Prelude.seq` Prelude.rnf referenceDataSourceDescriptions
+      `Prelude.seq` Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf applicationARN
+      `Prelude.seq` Prelude.rnf applicationStatus
+      `Prelude.seq` Prelude.rnf applicationVersionId
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ApplicationStatus.hs b/gen/Amazonka/KinesisAnalytics/Types/ApplicationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ApplicationStatus.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.KinesisAnalytics.Types.ApplicationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ApplicationStatus
+  ( ApplicationStatus
+      ( ..,
+        ApplicationStatus_DELETING,
+        ApplicationStatus_READY,
+        ApplicationStatus_RUNNING,
+        ApplicationStatus_STARTING,
+        ApplicationStatus_STOPPING,
+        ApplicationStatus_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ApplicationStatus = ApplicationStatus'
+  { fromApplicationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ApplicationStatus_DELETING :: ApplicationStatus
+pattern ApplicationStatus_DELETING = ApplicationStatus' "DELETING"
+
+pattern ApplicationStatus_READY :: ApplicationStatus
+pattern ApplicationStatus_READY = ApplicationStatus' "READY"
+
+pattern ApplicationStatus_RUNNING :: ApplicationStatus
+pattern ApplicationStatus_RUNNING = ApplicationStatus' "RUNNING"
+
+pattern ApplicationStatus_STARTING :: ApplicationStatus
+pattern ApplicationStatus_STARTING = ApplicationStatus' "STARTING"
+
+pattern ApplicationStatus_STOPPING :: ApplicationStatus
+pattern ApplicationStatus_STOPPING = ApplicationStatus' "STOPPING"
+
+pattern ApplicationStatus_UPDATING :: ApplicationStatus
+pattern ApplicationStatus_UPDATING = ApplicationStatus' "UPDATING"
+
+{-# COMPLETE
+  ApplicationStatus_DELETING,
+  ApplicationStatus_READY,
+  ApplicationStatus_RUNNING,
+  ApplicationStatus_STARTING,
+  ApplicationStatus_STOPPING,
+  ApplicationStatus_UPDATING,
+  ApplicationStatus'
+  #-}
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ApplicationSummary.hs b/gen/Amazonka/KinesisAnalytics/Types/ApplicationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ApplicationSummary.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.KinesisAnalytics.Types.ApplicationSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ApplicationSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.ApplicationStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Provides application summary information, including the application
+-- Amazon Resource Name (ARN), name, and status.
+--
+-- /See:/ 'newApplicationSummary' smart constructor.
+data ApplicationSummary = ApplicationSummary'
+  { -- | Name of the application.
+    applicationName :: Prelude.Text,
+    -- | ARN of the application.
+    applicationARN :: Prelude.Text,
+    -- | Status of the application.
+    applicationStatus :: ApplicationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'applicationSummary_applicationName' - Name of the application.
+--
+-- 'applicationARN', 'applicationSummary_applicationARN' - ARN of the application.
+--
+-- 'applicationStatus', 'applicationSummary_applicationStatus' - Status of the application.
+newApplicationSummary ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'applicationARN'
+  Prelude.Text ->
+  -- | 'applicationStatus'
+  ApplicationStatus ->
+  ApplicationSummary
+newApplicationSummary
+  pApplicationName_
+  pApplicationARN_
+  pApplicationStatus_ =
+    ApplicationSummary'
+      { applicationName =
+          pApplicationName_,
+        applicationARN = pApplicationARN_,
+        applicationStatus = pApplicationStatus_
+      }
+
+-- | Name of the application.
+applicationSummary_applicationName :: Lens.Lens' ApplicationSummary Prelude.Text
+applicationSummary_applicationName = Lens.lens (\ApplicationSummary' {applicationName} -> applicationName) (\s@ApplicationSummary' {} a -> s {applicationName = a} :: ApplicationSummary)
+
+-- | ARN of the application.
+applicationSummary_applicationARN :: Lens.Lens' ApplicationSummary Prelude.Text
+applicationSummary_applicationARN = Lens.lens (\ApplicationSummary' {applicationARN} -> applicationARN) (\s@ApplicationSummary' {} a -> s {applicationARN = a} :: ApplicationSummary)
+
+-- | Status of the application.
+applicationSummary_applicationStatus :: Lens.Lens' ApplicationSummary ApplicationStatus
+applicationSummary_applicationStatus = Lens.lens (\ApplicationSummary' {applicationStatus} -> applicationStatus) (\s@ApplicationSummary' {} a -> s {applicationStatus = a} :: ApplicationSummary)
+
+instance Data.FromJSON ApplicationSummary where
+  parseJSON =
+    Data.withObject
+      "ApplicationSummary"
+      ( \x ->
+          ApplicationSummary'
+            Prelude.<$> (x Data..: "ApplicationName")
+            Prelude.<*> (x Data..: "ApplicationARN")
+            Prelude.<*> (x Data..: "ApplicationStatus")
+      )
+
+instance Prelude.Hashable ApplicationSummary where
+  hashWithSalt _salt ApplicationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` applicationARN
+      `Prelude.hashWithSalt` applicationStatus
+
+instance Prelude.NFData ApplicationSummary where
+  rnf ApplicationSummary' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf applicationARN
+      `Prelude.seq` Prelude.rnf applicationStatus
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ApplicationUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/ApplicationUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ApplicationUpdate.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.KinesisAnalytics.Types.ApplicationUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ApplicationUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate
+import Amazonka.KinesisAnalytics.Types.InputUpdate
+import Amazonka.KinesisAnalytics.Types.OutputUpdate
+import Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes updates to apply to an existing Amazon Kinesis Analytics
+-- application.
+--
+-- /See:/ 'newApplicationUpdate' smart constructor.
+data ApplicationUpdate = ApplicationUpdate'
+  { -- | Describes application code updates.
+    applicationCodeUpdate :: Prelude.Maybe Prelude.Text,
+    -- | Describes application CloudWatch logging option updates.
+    cloudWatchLoggingOptionUpdates :: Prelude.Maybe [CloudWatchLoggingOptionUpdate],
+    -- | Describes application input configuration updates.
+    inputUpdates :: Prelude.Maybe [InputUpdate],
+    -- | Describes application output configuration updates.
+    outputUpdates :: Prelude.Maybe [OutputUpdate],
+    -- | Describes application reference data source updates.
+    referenceDataSourceUpdates :: Prelude.Maybe [ReferenceDataSourceUpdate]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationCodeUpdate', 'applicationUpdate_applicationCodeUpdate' - Describes application code updates.
+--
+-- 'cloudWatchLoggingOptionUpdates', 'applicationUpdate_cloudWatchLoggingOptionUpdates' - Describes application CloudWatch logging option updates.
+--
+-- 'inputUpdates', 'applicationUpdate_inputUpdates' - Describes application input configuration updates.
+--
+-- 'outputUpdates', 'applicationUpdate_outputUpdates' - Describes application output configuration updates.
+--
+-- 'referenceDataSourceUpdates', 'applicationUpdate_referenceDataSourceUpdates' - Describes application reference data source updates.
+newApplicationUpdate ::
+  ApplicationUpdate
+newApplicationUpdate =
+  ApplicationUpdate'
+    { applicationCodeUpdate =
+        Prelude.Nothing,
+      cloudWatchLoggingOptionUpdates = Prelude.Nothing,
+      inputUpdates = Prelude.Nothing,
+      outputUpdates = Prelude.Nothing,
+      referenceDataSourceUpdates = Prelude.Nothing
+    }
+
+-- | Describes application code updates.
+applicationUpdate_applicationCodeUpdate :: Lens.Lens' ApplicationUpdate (Prelude.Maybe Prelude.Text)
+applicationUpdate_applicationCodeUpdate = Lens.lens (\ApplicationUpdate' {applicationCodeUpdate} -> applicationCodeUpdate) (\s@ApplicationUpdate' {} a -> s {applicationCodeUpdate = a} :: ApplicationUpdate)
+
+-- | Describes application CloudWatch logging option updates.
+applicationUpdate_cloudWatchLoggingOptionUpdates :: Lens.Lens' ApplicationUpdate (Prelude.Maybe [CloudWatchLoggingOptionUpdate])
+applicationUpdate_cloudWatchLoggingOptionUpdates = Lens.lens (\ApplicationUpdate' {cloudWatchLoggingOptionUpdates} -> cloudWatchLoggingOptionUpdates) (\s@ApplicationUpdate' {} a -> s {cloudWatchLoggingOptionUpdates = a} :: ApplicationUpdate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes application input configuration updates.
+applicationUpdate_inputUpdates :: Lens.Lens' ApplicationUpdate (Prelude.Maybe [InputUpdate])
+applicationUpdate_inputUpdates = Lens.lens (\ApplicationUpdate' {inputUpdates} -> inputUpdates) (\s@ApplicationUpdate' {} a -> s {inputUpdates = a} :: ApplicationUpdate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes application output configuration updates.
+applicationUpdate_outputUpdates :: Lens.Lens' ApplicationUpdate (Prelude.Maybe [OutputUpdate])
+applicationUpdate_outputUpdates = Lens.lens (\ApplicationUpdate' {outputUpdates} -> outputUpdates) (\s@ApplicationUpdate' {} a -> s {outputUpdates = a} :: ApplicationUpdate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes application reference data source updates.
+applicationUpdate_referenceDataSourceUpdates :: Lens.Lens' ApplicationUpdate (Prelude.Maybe [ReferenceDataSourceUpdate])
+applicationUpdate_referenceDataSourceUpdates = Lens.lens (\ApplicationUpdate' {referenceDataSourceUpdates} -> referenceDataSourceUpdates) (\s@ApplicationUpdate' {} a -> s {referenceDataSourceUpdates = a} :: ApplicationUpdate) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable ApplicationUpdate where
+  hashWithSalt _salt ApplicationUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationCodeUpdate
+      `Prelude.hashWithSalt` cloudWatchLoggingOptionUpdates
+      `Prelude.hashWithSalt` inputUpdates
+      `Prelude.hashWithSalt` outputUpdates
+      `Prelude.hashWithSalt` referenceDataSourceUpdates
+
+instance Prelude.NFData ApplicationUpdate where
+  rnf ApplicationUpdate' {..} =
+    Prelude.rnf applicationCodeUpdate
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOptionUpdates
+      `Prelude.seq` Prelude.rnf inputUpdates
+      `Prelude.seq` Prelude.rnf outputUpdates
+      `Prelude.seq` Prelude.rnf referenceDataSourceUpdates
+
+instance Data.ToJSON ApplicationUpdate where
+  toJSON ApplicationUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplicationCodeUpdate" Data..=)
+              Prelude.<$> applicationCodeUpdate,
+            ("CloudWatchLoggingOptionUpdates" Data..=)
+              Prelude.<$> cloudWatchLoggingOptionUpdates,
+            ("InputUpdates" Data..=) Prelude.<$> inputUpdates,
+            ("OutputUpdates" Data..=) Prelude.<$> outputUpdates,
+            ("ReferenceDataSourceUpdates" Data..=)
+              Prelude.<$> referenceDataSourceUpdates
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/CSVMappingParameters.hs b/gen/Amazonka/KinesisAnalytics/Types/CSVMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/CSVMappingParameters.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.CSVMappingParameters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.CSVMappingParameters where
+
+import qualified 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 additional mapping information when the record format uses
+-- delimiters, such as CSV. For example, the following sample records use
+-- CSV format, where the records use the /\'\\n\'/ as the row delimiter and
+-- a comma (\",\") as the column delimiter:
+--
+-- @\"name1\", \"address1\"@
+--
+-- @\"name2\", \"address2\"@
+--
+-- /See:/ 'newCSVMappingParameters' smart constructor.
+data CSVMappingParameters = CSVMappingParameters'
+  { -- | Row delimiter. For example, in a CSV format, /\'\\n\'/ is the typical
+    -- row delimiter.
+    recordRowDelimiter :: Prelude.Text,
+    -- | Column delimiter. For example, in a CSV format, a comma (\",\") is the
+    -- typical column delimiter.
+    recordColumnDelimiter :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CSVMappingParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recordRowDelimiter', 'cSVMappingParameters_recordRowDelimiter' - Row delimiter. For example, in a CSV format, /\'\\n\'/ is the typical
+-- row delimiter.
+--
+-- 'recordColumnDelimiter', 'cSVMappingParameters_recordColumnDelimiter' - Column delimiter. For example, in a CSV format, a comma (\",\") is the
+-- typical column delimiter.
+newCSVMappingParameters ::
+  -- | 'recordRowDelimiter'
+  Prelude.Text ->
+  -- | 'recordColumnDelimiter'
+  Prelude.Text ->
+  CSVMappingParameters
+newCSVMappingParameters
+  pRecordRowDelimiter_
+  pRecordColumnDelimiter_ =
+    CSVMappingParameters'
+      { recordRowDelimiter =
+          pRecordRowDelimiter_,
+        recordColumnDelimiter = pRecordColumnDelimiter_
+      }
+
+-- | Row delimiter. For example, in a CSV format, /\'\\n\'/ is the typical
+-- row delimiter.
+cSVMappingParameters_recordRowDelimiter :: Lens.Lens' CSVMappingParameters Prelude.Text
+cSVMappingParameters_recordRowDelimiter = Lens.lens (\CSVMappingParameters' {recordRowDelimiter} -> recordRowDelimiter) (\s@CSVMappingParameters' {} a -> s {recordRowDelimiter = a} :: CSVMappingParameters)
+
+-- | Column delimiter. For example, in a CSV format, a comma (\",\") is the
+-- typical column delimiter.
+cSVMappingParameters_recordColumnDelimiter :: Lens.Lens' CSVMappingParameters Prelude.Text
+cSVMappingParameters_recordColumnDelimiter = Lens.lens (\CSVMappingParameters' {recordColumnDelimiter} -> recordColumnDelimiter) (\s@CSVMappingParameters' {} a -> s {recordColumnDelimiter = a} :: CSVMappingParameters)
+
+instance Data.FromJSON CSVMappingParameters where
+  parseJSON =
+    Data.withObject
+      "CSVMappingParameters"
+      ( \x ->
+          CSVMappingParameters'
+            Prelude.<$> (x Data..: "RecordRowDelimiter")
+            Prelude.<*> (x Data..: "RecordColumnDelimiter")
+      )
+
+instance Prelude.Hashable CSVMappingParameters where
+  hashWithSalt _salt CSVMappingParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` recordRowDelimiter
+      `Prelude.hashWithSalt` recordColumnDelimiter
+
+instance Prelude.NFData CSVMappingParameters where
+  rnf CSVMappingParameters' {..} =
+    Prelude.rnf recordRowDelimiter
+      `Prelude.seq` Prelude.rnf recordColumnDelimiter
+
+instance Data.ToJSON CSVMappingParameters where
+  toJSON CSVMappingParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("RecordRowDelimiter" Data..= recordRowDelimiter),
+            Prelude.Just
+              ( "RecordColumnDelimiter"
+                  Data..= recordColumnDelimiter
+              )
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOption.hs b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOption.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.KinesisAnalytics.Types.CloudWatchLoggingOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOption where
+
+import qualified 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 a description of CloudWatch logging options, including the log
+-- stream Amazon Resource Name (ARN) and the role ARN.
+--
+-- /See:/ 'newCloudWatchLoggingOption' smart constructor.
+data CloudWatchLoggingOption = CloudWatchLoggingOption'
+  { -- | ARN of the CloudWatch log to receive application messages.
+    logStreamARN :: Prelude.Text,
+    -- | IAM ARN of the role to use to send application messages. Note: To write
+    -- application messages to CloudWatch, the IAM role that is used must have
+    -- the @PutLogEvents@ policy action enabled.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchLoggingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logStreamARN', 'cloudWatchLoggingOption_logStreamARN' - ARN of the CloudWatch log to receive application messages.
+--
+-- 'roleARN', 'cloudWatchLoggingOption_roleARN' - IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role that is used must have
+-- the @PutLogEvents@ policy action enabled.
+newCloudWatchLoggingOption ::
+  -- | 'logStreamARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  CloudWatchLoggingOption
+newCloudWatchLoggingOption pLogStreamARN_ pRoleARN_ =
+  CloudWatchLoggingOption'
+    { logStreamARN =
+        pLogStreamARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | ARN of the CloudWatch log to receive application messages.
+cloudWatchLoggingOption_logStreamARN :: Lens.Lens' CloudWatchLoggingOption Prelude.Text
+cloudWatchLoggingOption_logStreamARN = Lens.lens (\CloudWatchLoggingOption' {logStreamARN} -> logStreamARN) (\s@CloudWatchLoggingOption' {} a -> s {logStreamARN = a} :: CloudWatchLoggingOption)
+
+-- | IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role that is used must have
+-- the @PutLogEvents@ policy action enabled.
+cloudWatchLoggingOption_roleARN :: Lens.Lens' CloudWatchLoggingOption Prelude.Text
+cloudWatchLoggingOption_roleARN = Lens.lens (\CloudWatchLoggingOption' {roleARN} -> roleARN) (\s@CloudWatchLoggingOption' {} a -> s {roleARN = a} :: CloudWatchLoggingOption)
+
+instance Prelude.Hashable CloudWatchLoggingOption where
+  hashWithSalt _salt CloudWatchLoggingOption' {..} =
+    _salt
+      `Prelude.hashWithSalt` logStreamARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData CloudWatchLoggingOption where
+  rnf CloudWatchLoggingOption' {..} =
+    Prelude.rnf logStreamARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON CloudWatchLoggingOption where
+  toJSON CloudWatchLoggingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LogStreamARN" Data..= logStreamARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionDescription.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Description of the CloudWatch logging option.
+--
+-- /See:/ 'newCloudWatchLoggingOptionDescription' smart constructor.
+data CloudWatchLoggingOptionDescription = CloudWatchLoggingOptionDescription'
+  { -- | ID of the CloudWatch logging option description.
+    cloudWatchLoggingOptionId :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the CloudWatch log to receive application messages.
+    logStreamARN :: Prelude.Text,
+    -- | IAM ARN of the role to use to send application messages. Note: To write
+    -- application messages to CloudWatch, the IAM role used must have the
+    -- @PutLogEvents@ policy action enabled.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchLoggingOptionDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cloudWatchLoggingOptionId', 'cloudWatchLoggingOptionDescription_cloudWatchLoggingOptionId' - ID of the CloudWatch logging option description.
+--
+-- 'logStreamARN', 'cloudWatchLoggingOptionDescription_logStreamARN' - ARN of the CloudWatch log to receive application messages.
+--
+-- 'roleARN', 'cloudWatchLoggingOptionDescription_roleARN' - IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role used must have the
+-- @PutLogEvents@ policy action enabled.
+newCloudWatchLoggingOptionDescription ::
+  -- | 'logStreamARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  CloudWatchLoggingOptionDescription
+newCloudWatchLoggingOptionDescription
+  pLogStreamARN_
+  pRoleARN_ =
+    CloudWatchLoggingOptionDescription'
+      { cloudWatchLoggingOptionId =
+          Prelude.Nothing,
+        logStreamARN = pLogStreamARN_,
+        roleARN = pRoleARN_
+      }
+
+-- | ID of the CloudWatch logging option description.
+cloudWatchLoggingOptionDescription_cloudWatchLoggingOptionId :: Lens.Lens' CloudWatchLoggingOptionDescription (Prelude.Maybe Prelude.Text)
+cloudWatchLoggingOptionDescription_cloudWatchLoggingOptionId = Lens.lens (\CloudWatchLoggingOptionDescription' {cloudWatchLoggingOptionId} -> cloudWatchLoggingOptionId) (\s@CloudWatchLoggingOptionDescription' {} a -> s {cloudWatchLoggingOptionId = a} :: CloudWatchLoggingOptionDescription)
+
+-- | ARN of the CloudWatch log to receive application messages.
+cloudWatchLoggingOptionDescription_logStreamARN :: Lens.Lens' CloudWatchLoggingOptionDescription Prelude.Text
+cloudWatchLoggingOptionDescription_logStreamARN = Lens.lens (\CloudWatchLoggingOptionDescription' {logStreamARN} -> logStreamARN) (\s@CloudWatchLoggingOptionDescription' {} a -> s {logStreamARN = a} :: CloudWatchLoggingOptionDescription)
+
+-- | IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role used must have the
+-- @PutLogEvents@ policy action enabled.
+cloudWatchLoggingOptionDescription_roleARN :: Lens.Lens' CloudWatchLoggingOptionDescription Prelude.Text
+cloudWatchLoggingOptionDescription_roleARN = Lens.lens (\CloudWatchLoggingOptionDescription' {roleARN} -> roleARN) (\s@CloudWatchLoggingOptionDescription' {} a -> s {roleARN = a} :: CloudWatchLoggingOptionDescription)
+
+instance
+  Data.FromJSON
+    CloudWatchLoggingOptionDescription
+  where
+  parseJSON =
+    Data.withObject
+      "CloudWatchLoggingOptionDescription"
+      ( \x ->
+          CloudWatchLoggingOptionDescription'
+            Prelude.<$> (x Data..:? "CloudWatchLoggingOptionId")
+            Prelude.<*> (x Data..: "LogStreamARN")
+            Prelude.<*> (x Data..: "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    CloudWatchLoggingOptionDescription
+  where
+  hashWithSalt
+    _salt
+    CloudWatchLoggingOptionDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` cloudWatchLoggingOptionId
+        `Prelude.hashWithSalt` logStreamARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    CloudWatchLoggingOptionDescription
+  where
+  rnf CloudWatchLoggingOptionDescription' {..} =
+    Prelude.rnf cloudWatchLoggingOptionId
+      `Prelude.seq` Prelude.rnf logStreamARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/CloudWatchLoggingOptionUpdate.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.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.CloudWatchLoggingOptionUpdate where
+
+import qualified 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 CloudWatch logging option updates.
+--
+-- /See:/ 'newCloudWatchLoggingOptionUpdate' smart constructor.
+data CloudWatchLoggingOptionUpdate = CloudWatchLoggingOptionUpdate'
+  { -- | ARN of the CloudWatch log to receive application messages.
+    logStreamARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | IAM ARN of the role to use to send application messages. Note: To write
+    -- application messages to CloudWatch, the IAM role used must have the
+    -- @PutLogEvents@ policy action enabled.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ID of the CloudWatch logging option to update
+    cloudWatchLoggingOptionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchLoggingOptionUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logStreamARNUpdate', 'cloudWatchLoggingOptionUpdate_logStreamARNUpdate' - ARN of the CloudWatch log to receive application messages.
+--
+-- 'roleARNUpdate', 'cloudWatchLoggingOptionUpdate_roleARNUpdate' - IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role used must have the
+-- @PutLogEvents@ policy action enabled.
+--
+-- 'cloudWatchLoggingOptionId', 'cloudWatchLoggingOptionUpdate_cloudWatchLoggingOptionId' - ID of the CloudWatch logging option to update
+newCloudWatchLoggingOptionUpdate ::
+  -- | 'cloudWatchLoggingOptionId'
+  Prelude.Text ->
+  CloudWatchLoggingOptionUpdate
+newCloudWatchLoggingOptionUpdate
+  pCloudWatchLoggingOptionId_ =
+    CloudWatchLoggingOptionUpdate'
+      { logStreamARNUpdate =
+          Prelude.Nothing,
+        roleARNUpdate = Prelude.Nothing,
+        cloudWatchLoggingOptionId =
+          pCloudWatchLoggingOptionId_
+      }
+
+-- | ARN of the CloudWatch log to receive application messages.
+cloudWatchLoggingOptionUpdate_logStreamARNUpdate :: Lens.Lens' CloudWatchLoggingOptionUpdate (Prelude.Maybe Prelude.Text)
+cloudWatchLoggingOptionUpdate_logStreamARNUpdate = Lens.lens (\CloudWatchLoggingOptionUpdate' {logStreamARNUpdate} -> logStreamARNUpdate) (\s@CloudWatchLoggingOptionUpdate' {} a -> s {logStreamARNUpdate = a} :: CloudWatchLoggingOptionUpdate)
+
+-- | IAM ARN of the role to use to send application messages. Note: To write
+-- application messages to CloudWatch, the IAM role used must have the
+-- @PutLogEvents@ policy action enabled.
+cloudWatchLoggingOptionUpdate_roleARNUpdate :: Lens.Lens' CloudWatchLoggingOptionUpdate (Prelude.Maybe Prelude.Text)
+cloudWatchLoggingOptionUpdate_roleARNUpdate = Lens.lens (\CloudWatchLoggingOptionUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@CloudWatchLoggingOptionUpdate' {} a -> s {roleARNUpdate = a} :: CloudWatchLoggingOptionUpdate)
+
+-- | ID of the CloudWatch logging option to update
+cloudWatchLoggingOptionUpdate_cloudWatchLoggingOptionId :: Lens.Lens' CloudWatchLoggingOptionUpdate Prelude.Text
+cloudWatchLoggingOptionUpdate_cloudWatchLoggingOptionId = Lens.lens (\CloudWatchLoggingOptionUpdate' {cloudWatchLoggingOptionId} -> cloudWatchLoggingOptionId) (\s@CloudWatchLoggingOptionUpdate' {} a -> s {cloudWatchLoggingOptionId = a} :: CloudWatchLoggingOptionUpdate)
+
+instance
+  Prelude.Hashable
+    CloudWatchLoggingOptionUpdate
+  where
+  hashWithSalt _salt CloudWatchLoggingOptionUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` logStreamARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+      `Prelude.hashWithSalt` cloudWatchLoggingOptionId
+
+instance Prelude.NFData CloudWatchLoggingOptionUpdate where
+  rnf CloudWatchLoggingOptionUpdate' {..} =
+    Prelude.rnf logStreamARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+      `Prelude.seq` Prelude.rnf cloudWatchLoggingOptionId
+
+instance Data.ToJSON CloudWatchLoggingOptionUpdate where
+  toJSON CloudWatchLoggingOptionUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LogStreamARNUpdate" Data..=)
+              Prelude.<$> logStreamARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate,
+            Prelude.Just
+              ( "CloudWatchLoggingOptionId"
+                  Data..= cloudWatchLoggingOptionId
+              )
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/DestinationSchema.hs b/gen/Amazonka/KinesisAnalytics/Types/DestinationSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/DestinationSchema.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.KinesisAnalytics.Types.DestinationSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.DestinationSchema where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.RecordFormatType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the data format when records are written to the destination.
+-- For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+--
+-- /See:/ 'newDestinationSchema' smart constructor.
+data DestinationSchema = DestinationSchema'
+  { -- | Specifies the format of the records on the output stream.
+    recordFormatType :: RecordFormatType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recordFormatType', 'destinationSchema_recordFormatType' - Specifies the format of the records on the output stream.
+newDestinationSchema ::
+  -- | 'recordFormatType'
+  RecordFormatType ->
+  DestinationSchema
+newDestinationSchema pRecordFormatType_ =
+  DestinationSchema'
+    { recordFormatType =
+        pRecordFormatType_
+    }
+
+-- | Specifies the format of the records on the output stream.
+destinationSchema_recordFormatType :: Lens.Lens' DestinationSchema RecordFormatType
+destinationSchema_recordFormatType = Lens.lens (\DestinationSchema' {recordFormatType} -> recordFormatType) (\s@DestinationSchema' {} a -> s {recordFormatType = a} :: DestinationSchema)
+
+instance Data.FromJSON DestinationSchema where
+  parseJSON =
+    Data.withObject
+      "DestinationSchema"
+      ( \x ->
+          DestinationSchema'
+            Prelude.<$> (x Data..: "RecordFormatType")
+      )
+
+instance Prelude.Hashable DestinationSchema where
+  hashWithSalt _salt DestinationSchema' {..} =
+    _salt `Prelude.hashWithSalt` recordFormatType
+
+instance Prelude.NFData DestinationSchema where
+  rnf DestinationSchema' {..} =
+    Prelude.rnf recordFormatType
+
+instance Data.ToJSON DestinationSchema where
+  toJSON DestinationSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("RecordFormatType" Data..= recordFormatType)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/Input.hs b/gen/Amazonka/KinesisAnalytics/Types/Input.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/Input.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.Input
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.Input where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputParallelism
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfiguration
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInput
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you configure the application input, you specify the streaming
+-- source, the in-application stream name that is created, and the mapping
+-- between the two. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- /See:/ 'newInput' smart constructor.
+data Input = Input'
+  { -- | Describes the number of in-application streams to create.
+    --
+    -- Data from your source is routed to these in-application input streams.
+    --
+    -- (see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+    inputParallelism :: Prelude.Maybe InputParallelism,
+    -- | The
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+    -- for the input. An input processor transforms records as they are
+    -- received from the stream, before the application\'s SQL code executes.
+    -- Currently, the only input processing configuration available is
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+    inputProcessingConfiguration :: Prelude.Maybe InputProcessingConfiguration,
+    -- | If the streaming source is an Amazon Kinesis Firehose delivery stream,
+    -- identifies the delivery stream\'s ARN and an IAM role that enables
+    -- Amazon Kinesis Analytics to access the stream on your behalf.
+    --
+    -- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+    -- required.
+    kinesisFirehoseInput :: Prelude.Maybe KinesisFirehoseInput,
+    -- | If the streaming source is an Amazon Kinesis stream, identifies the
+    -- stream\'s Amazon Resource Name (ARN) and an IAM role that enables Amazon
+    -- Kinesis Analytics to access the stream on your behalf.
+    --
+    -- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+    -- required.
+    kinesisStreamsInput :: Prelude.Maybe KinesisStreamsInput,
+    -- | Name prefix to use when creating an in-application stream. Suppose that
+    -- you specify a prefix \"MyInApplicationStream.\" Amazon Kinesis Analytics
+    -- then creates one or more (as per the @InputParallelism@ count you
+    -- specified) in-application streams with names
+    -- \"MyInApplicationStream_001,\" \"MyInApplicationStream_002,\" and so on.
+    namePrefix :: Prelude.Text,
+    -- | Describes the format of the data in the streaming source, and how each
+    -- data element maps to corresponding columns in the in-application stream
+    -- that is being created.
+    --
+    -- Also used to describe the format of the reference data source.
+    inputSchema :: SourceSchema
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Input' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputParallelism', 'input_inputParallelism' - Describes the number of in-application streams to create.
+--
+-- Data from your source is routed to these in-application input streams.
+--
+-- (see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- 'inputProcessingConfiguration', 'input_inputProcessingConfiguration' - The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- for the input. An input processor transforms records as they are
+-- received from the stream, before the application\'s SQL code executes.
+-- Currently, the only input processing configuration available is
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+--
+-- 'kinesisFirehoseInput', 'input_kinesisFirehoseInput' - If the streaming source is an Amazon Kinesis Firehose delivery stream,
+-- identifies the delivery stream\'s ARN and an IAM role that enables
+-- Amazon Kinesis Analytics to access the stream on your behalf.
+--
+-- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+-- required.
+--
+-- 'kinesisStreamsInput', 'input_kinesisStreamsInput' - If the streaming source is an Amazon Kinesis stream, identifies the
+-- stream\'s Amazon Resource Name (ARN) and an IAM role that enables Amazon
+-- Kinesis Analytics to access the stream on your behalf.
+--
+-- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+-- required.
+--
+-- 'namePrefix', 'input_namePrefix' - Name prefix to use when creating an in-application stream. Suppose that
+-- you specify a prefix \"MyInApplicationStream.\" Amazon Kinesis Analytics
+-- then creates one or more (as per the @InputParallelism@ count you
+-- specified) in-application streams with names
+-- \"MyInApplicationStream_001,\" \"MyInApplicationStream_002,\" and so on.
+--
+-- 'inputSchema', 'input_inputSchema' - Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns in the in-application stream
+-- that is being created.
+--
+-- Also used to describe the format of the reference data source.
+newInput ::
+  -- | 'namePrefix'
+  Prelude.Text ->
+  -- | 'inputSchema'
+  SourceSchema ->
+  Input
+newInput pNamePrefix_ pInputSchema_ =
+  Input'
+    { inputParallelism = Prelude.Nothing,
+      inputProcessingConfiguration = Prelude.Nothing,
+      kinesisFirehoseInput = Prelude.Nothing,
+      kinesisStreamsInput = Prelude.Nothing,
+      namePrefix = pNamePrefix_,
+      inputSchema = pInputSchema_
+    }
+
+-- | Describes the number of in-application streams to create.
+--
+-- Data from your source is routed to these in-application input streams.
+--
+-- (see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+input_inputParallelism :: Lens.Lens' Input (Prelude.Maybe InputParallelism)
+input_inputParallelism = Lens.lens (\Input' {inputParallelism} -> inputParallelism) (\s@Input' {} a -> s {inputParallelism = a} :: Input)
+
+-- | The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>
+-- for the input. An input processor transforms records as they are
+-- received from the stream, before the application\'s SQL code executes.
+-- Currently, the only input processing configuration available is
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+input_inputProcessingConfiguration :: Lens.Lens' Input (Prelude.Maybe InputProcessingConfiguration)
+input_inputProcessingConfiguration = Lens.lens (\Input' {inputProcessingConfiguration} -> inputProcessingConfiguration) (\s@Input' {} a -> s {inputProcessingConfiguration = a} :: Input)
+
+-- | If the streaming source is an Amazon Kinesis Firehose delivery stream,
+-- identifies the delivery stream\'s ARN and an IAM role that enables
+-- Amazon Kinesis Analytics to access the stream on your behalf.
+--
+-- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+-- required.
+input_kinesisFirehoseInput :: Lens.Lens' Input (Prelude.Maybe KinesisFirehoseInput)
+input_kinesisFirehoseInput = Lens.lens (\Input' {kinesisFirehoseInput} -> kinesisFirehoseInput) (\s@Input' {} a -> s {kinesisFirehoseInput = a} :: Input)
+
+-- | If the streaming source is an Amazon Kinesis stream, identifies the
+-- stream\'s Amazon Resource Name (ARN) and an IAM role that enables Amazon
+-- Kinesis Analytics to access the stream on your behalf.
+--
+-- Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is
+-- required.
+input_kinesisStreamsInput :: Lens.Lens' Input (Prelude.Maybe KinesisStreamsInput)
+input_kinesisStreamsInput = Lens.lens (\Input' {kinesisStreamsInput} -> kinesisStreamsInput) (\s@Input' {} a -> s {kinesisStreamsInput = a} :: Input)
+
+-- | Name prefix to use when creating an in-application stream. Suppose that
+-- you specify a prefix \"MyInApplicationStream.\" Amazon Kinesis Analytics
+-- then creates one or more (as per the @InputParallelism@ count you
+-- specified) in-application streams with names
+-- \"MyInApplicationStream_001,\" \"MyInApplicationStream_002,\" and so on.
+input_namePrefix :: Lens.Lens' Input Prelude.Text
+input_namePrefix = Lens.lens (\Input' {namePrefix} -> namePrefix) (\s@Input' {} a -> s {namePrefix = a} :: Input)
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns in the in-application stream
+-- that is being created.
+--
+-- Also used to describe the format of the reference data source.
+input_inputSchema :: Lens.Lens' Input SourceSchema
+input_inputSchema = Lens.lens (\Input' {inputSchema} -> inputSchema) (\s@Input' {} a -> s {inputSchema = a} :: Input)
+
+instance Prelude.Hashable Input where
+  hashWithSalt _salt Input' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputParallelism
+      `Prelude.hashWithSalt` inputProcessingConfiguration
+      `Prelude.hashWithSalt` kinesisFirehoseInput
+      `Prelude.hashWithSalt` kinesisStreamsInput
+      `Prelude.hashWithSalt` namePrefix
+      `Prelude.hashWithSalt` inputSchema
+
+instance Prelude.NFData Input where
+  rnf Input' {..} =
+    Prelude.rnf inputParallelism
+      `Prelude.seq` Prelude.rnf inputProcessingConfiguration
+      `Prelude.seq` Prelude.rnf kinesisFirehoseInput
+      `Prelude.seq` Prelude.rnf kinesisStreamsInput
+      `Prelude.seq` Prelude.rnf namePrefix
+      `Prelude.seq` Prelude.rnf inputSchema
+
+instance Data.ToJSON Input where
+  toJSON Input' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputParallelism" Data..=)
+              Prelude.<$> inputParallelism,
+            ("InputProcessingConfiguration" Data..=)
+              Prelude.<$> inputProcessingConfiguration,
+            ("KinesisFirehoseInput" Data..=)
+              Prelude.<$> kinesisFirehoseInput,
+            ("KinesisStreamsInput" Data..=)
+              Prelude.<$> kinesisStreamsInput,
+            Prelude.Just ("NamePrefix" Data..= namePrefix),
+            Prelude.Just ("InputSchema" Data..= inputSchema)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputConfiguration.hs b/gen/Amazonka/KinesisAnalytics/Types/InputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputConfiguration.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.KinesisAnalytics.Types.InputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you start your application, you provide this configuration, which
+-- identifies the input source and the point in the input source at which
+-- you want the application to start processing records.
+--
+-- /See:/ 'newInputConfiguration' smart constructor.
+data InputConfiguration = InputConfiguration'
+  { -- | Input source ID. You can get this ID by calling the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation.
+    id :: Prelude.Text,
+    -- | Point at which you want the application to start processing records from
+    -- the streaming source.
+    inputStartingPositionConfiguration :: InputStartingPositionConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'inputConfiguration_id' - Input source ID. You can get this ID by calling the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+--
+-- 'inputStartingPositionConfiguration', 'inputConfiguration_inputStartingPositionConfiguration' - Point at which you want the application to start processing records from
+-- the streaming source.
+newInputConfiguration ::
+  -- | 'id'
+  Prelude.Text ->
+  -- | 'inputStartingPositionConfiguration'
+  InputStartingPositionConfiguration ->
+  InputConfiguration
+newInputConfiguration
+  pId_
+  pInputStartingPositionConfiguration_ =
+    InputConfiguration'
+      { id = pId_,
+        inputStartingPositionConfiguration =
+          pInputStartingPositionConfiguration_
+      }
+
+-- | Input source ID. You can get this ID by calling the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation.
+inputConfiguration_id :: Lens.Lens' InputConfiguration Prelude.Text
+inputConfiguration_id = Lens.lens (\InputConfiguration' {id} -> id) (\s@InputConfiguration' {} a -> s {id = a} :: InputConfiguration)
+
+-- | Point at which you want the application to start processing records from
+-- the streaming source.
+inputConfiguration_inputStartingPositionConfiguration :: Lens.Lens' InputConfiguration InputStartingPositionConfiguration
+inputConfiguration_inputStartingPositionConfiguration = Lens.lens (\InputConfiguration' {inputStartingPositionConfiguration} -> inputStartingPositionConfiguration) (\s@InputConfiguration' {} a -> s {inputStartingPositionConfiguration = a} :: InputConfiguration)
+
+instance Prelude.Hashable InputConfiguration where
+  hashWithSalt _salt InputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` inputStartingPositionConfiguration
+
+instance Prelude.NFData InputConfiguration where
+  rnf InputConfiguration' {..} =
+    Prelude.rnf id
+      `Prelude.seq` Prelude.rnf inputStartingPositionConfiguration
+
+instance Data.ToJSON InputConfiguration where
+  toJSON InputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Id" Data..= id),
+            Prelude.Just
+              ( "InputStartingPositionConfiguration"
+                  Data..= inputStartingPositionConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/InputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputDescription.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.InputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputParallelism
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationDescription
+import Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the application input configuration. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- /See:/ 'newInputDescription' smart constructor.
+data InputDescription = InputDescription'
+  { -- | Returns the in-application stream names that are mapped to the stream
+    -- source.
+    inAppStreamNames :: Prelude.Maybe [Prelude.Text],
+    -- | Input ID associated with the application input. This is the ID that
+    -- Amazon Kinesis Analytics assigns to each input configuration you add to
+    -- your application.
+    inputId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the configured parallelism (number of in-application streams
+    -- mapped to the streaming source).
+    inputParallelism :: Prelude.Maybe InputParallelism,
+    -- | The description of the preprocessor that executes on records in this
+    -- input before the application\'s code is run.
+    inputProcessingConfigurationDescription :: Prelude.Maybe InputProcessingConfigurationDescription,
+    -- | Describes the format of the data in the streaming source, and how each
+    -- data element maps to corresponding columns in the in-application stream
+    -- that is being created.
+    inputSchema :: Prelude.Maybe SourceSchema,
+    -- | Point at which the application is configured to read from the input
+    -- stream.
+    inputStartingPositionConfiguration :: Prelude.Maybe InputStartingPositionConfiguration,
+    -- | If an Amazon Kinesis Firehose delivery stream is configured as a
+    -- streaming source, provides the delivery stream\'s ARN and an IAM role
+    -- that enables Amazon Kinesis Analytics to access the stream on your
+    -- behalf.
+    kinesisFirehoseInputDescription :: Prelude.Maybe KinesisFirehoseInputDescription,
+    -- | If an Amazon Kinesis stream is configured as streaming source, provides
+    -- Amazon Kinesis stream\'s Amazon Resource Name (ARN) and an IAM role that
+    -- enables Amazon Kinesis Analytics to access the stream on your behalf.
+    kinesisStreamsInputDescription :: Prelude.Maybe KinesisStreamsInputDescription,
+    -- | In-application name prefix.
+    namePrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inAppStreamNames', 'inputDescription_inAppStreamNames' - Returns the in-application stream names that are mapped to the stream
+-- source.
+--
+-- 'inputId', 'inputDescription_inputId' - Input ID associated with the application input. This is the ID that
+-- Amazon Kinesis Analytics assigns to each input configuration you add to
+-- your application.
+--
+-- 'inputParallelism', 'inputDescription_inputParallelism' - Describes the configured parallelism (number of in-application streams
+-- mapped to the streaming source).
+--
+-- 'inputProcessingConfigurationDescription', 'inputDescription_inputProcessingConfigurationDescription' - The description of the preprocessor that executes on records in this
+-- input before the application\'s code is run.
+--
+-- 'inputSchema', 'inputDescription_inputSchema' - Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns in the in-application stream
+-- that is being created.
+--
+-- 'inputStartingPositionConfiguration', 'inputDescription_inputStartingPositionConfiguration' - Point at which the application is configured to read from the input
+-- stream.
+--
+-- 'kinesisFirehoseInputDescription', 'inputDescription_kinesisFirehoseInputDescription' - If an Amazon Kinesis Firehose delivery stream is configured as a
+-- streaming source, provides the delivery stream\'s ARN and an IAM role
+-- that enables Amazon Kinesis Analytics to access the stream on your
+-- behalf.
+--
+-- 'kinesisStreamsInputDescription', 'inputDescription_kinesisStreamsInputDescription' - If an Amazon Kinesis stream is configured as streaming source, provides
+-- Amazon Kinesis stream\'s Amazon Resource Name (ARN) and an IAM role that
+-- enables Amazon Kinesis Analytics to access the stream on your behalf.
+--
+-- 'namePrefix', 'inputDescription_namePrefix' - In-application name prefix.
+newInputDescription ::
+  InputDescription
+newInputDescription =
+  InputDescription'
+    { inAppStreamNames =
+        Prelude.Nothing,
+      inputId = Prelude.Nothing,
+      inputParallelism = Prelude.Nothing,
+      inputProcessingConfigurationDescription =
+        Prelude.Nothing,
+      inputSchema = Prelude.Nothing,
+      inputStartingPositionConfiguration = Prelude.Nothing,
+      kinesisFirehoseInputDescription = Prelude.Nothing,
+      kinesisStreamsInputDescription = Prelude.Nothing,
+      namePrefix = Prelude.Nothing
+    }
+
+-- | Returns the in-application stream names that are mapped to the stream
+-- source.
+inputDescription_inAppStreamNames :: Lens.Lens' InputDescription (Prelude.Maybe [Prelude.Text])
+inputDescription_inAppStreamNames = Lens.lens (\InputDescription' {inAppStreamNames} -> inAppStreamNames) (\s@InputDescription' {} a -> s {inAppStreamNames = a} :: InputDescription) Prelude.. Lens.mapping Lens.coerced
+
+-- | Input ID associated with the application input. This is the ID that
+-- Amazon Kinesis Analytics assigns to each input configuration you add to
+-- your application.
+inputDescription_inputId :: Lens.Lens' InputDescription (Prelude.Maybe Prelude.Text)
+inputDescription_inputId = Lens.lens (\InputDescription' {inputId} -> inputId) (\s@InputDescription' {} a -> s {inputId = a} :: InputDescription)
+
+-- | Describes the configured parallelism (number of in-application streams
+-- mapped to the streaming source).
+inputDescription_inputParallelism :: Lens.Lens' InputDescription (Prelude.Maybe InputParallelism)
+inputDescription_inputParallelism = Lens.lens (\InputDescription' {inputParallelism} -> inputParallelism) (\s@InputDescription' {} a -> s {inputParallelism = a} :: InputDescription)
+
+-- | The description of the preprocessor that executes on records in this
+-- input before the application\'s code is run.
+inputDescription_inputProcessingConfigurationDescription :: Lens.Lens' InputDescription (Prelude.Maybe InputProcessingConfigurationDescription)
+inputDescription_inputProcessingConfigurationDescription = Lens.lens (\InputDescription' {inputProcessingConfigurationDescription} -> inputProcessingConfigurationDescription) (\s@InputDescription' {} a -> s {inputProcessingConfigurationDescription = a} :: InputDescription)
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns in the in-application stream
+-- that is being created.
+inputDescription_inputSchema :: Lens.Lens' InputDescription (Prelude.Maybe SourceSchema)
+inputDescription_inputSchema = Lens.lens (\InputDescription' {inputSchema} -> inputSchema) (\s@InputDescription' {} a -> s {inputSchema = a} :: InputDescription)
+
+-- | Point at which the application is configured to read from the input
+-- stream.
+inputDescription_inputStartingPositionConfiguration :: Lens.Lens' InputDescription (Prelude.Maybe InputStartingPositionConfiguration)
+inputDescription_inputStartingPositionConfiguration = Lens.lens (\InputDescription' {inputStartingPositionConfiguration} -> inputStartingPositionConfiguration) (\s@InputDescription' {} a -> s {inputStartingPositionConfiguration = a} :: InputDescription)
+
+-- | If an Amazon Kinesis Firehose delivery stream is configured as a
+-- streaming source, provides the delivery stream\'s ARN and an IAM role
+-- that enables Amazon Kinesis Analytics to access the stream on your
+-- behalf.
+inputDescription_kinesisFirehoseInputDescription :: Lens.Lens' InputDescription (Prelude.Maybe KinesisFirehoseInputDescription)
+inputDescription_kinesisFirehoseInputDescription = Lens.lens (\InputDescription' {kinesisFirehoseInputDescription} -> kinesisFirehoseInputDescription) (\s@InputDescription' {} a -> s {kinesisFirehoseInputDescription = a} :: InputDescription)
+
+-- | If an Amazon Kinesis stream is configured as streaming source, provides
+-- Amazon Kinesis stream\'s Amazon Resource Name (ARN) and an IAM role that
+-- enables Amazon Kinesis Analytics to access the stream on your behalf.
+inputDescription_kinesisStreamsInputDescription :: Lens.Lens' InputDescription (Prelude.Maybe KinesisStreamsInputDescription)
+inputDescription_kinesisStreamsInputDescription = Lens.lens (\InputDescription' {kinesisStreamsInputDescription} -> kinesisStreamsInputDescription) (\s@InputDescription' {} a -> s {kinesisStreamsInputDescription = a} :: InputDescription)
+
+-- | In-application name prefix.
+inputDescription_namePrefix :: Lens.Lens' InputDescription (Prelude.Maybe Prelude.Text)
+inputDescription_namePrefix = Lens.lens (\InputDescription' {namePrefix} -> namePrefix) (\s@InputDescription' {} a -> s {namePrefix = a} :: InputDescription)
+
+instance Data.FromJSON InputDescription where
+  parseJSON =
+    Data.withObject
+      "InputDescription"
+      ( \x ->
+          InputDescription'
+            Prelude.<$> ( x
+                            Data..:? "InAppStreamNames"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "InputId")
+            Prelude.<*> (x Data..:? "InputParallelism")
+            Prelude.<*> ( x
+                            Data..:? "InputProcessingConfigurationDescription"
+                        )
+            Prelude.<*> (x Data..:? "InputSchema")
+            Prelude.<*> (x Data..:? "InputStartingPositionConfiguration")
+            Prelude.<*> (x Data..:? "KinesisFirehoseInputDescription")
+            Prelude.<*> (x Data..:? "KinesisStreamsInputDescription")
+            Prelude.<*> (x Data..:? "NamePrefix")
+      )
+
+instance Prelude.Hashable InputDescription where
+  hashWithSalt _salt InputDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` inAppStreamNames
+      `Prelude.hashWithSalt` inputId
+      `Prelude.hashWithSalt` inputParallelism
+      `Prelude.hashWithSalt` inputProcessingConfigurationDescription
+      `Prelude.hashWithSalt` inputSchema
+      `Prelude.hashWithSalt` inputStartingPositionConfiguration
+      `Prelude.hashWithSalt` kinesisFirehoseInputDescription
+      `Prelude.hashWithSalt` kinesisStreamsInputDescription
+      `Prelude.hashWithSalt` namePrefix
+
+instance Prelude.NFData InputDescription where
+  rnf InputDescription' {..} =
+    Prelude.rnf inAppStreamNames
+      `Prelude.seq` Prelude.rnf inputId
+      `Prelude.seq` Prelude.rnf inputParallelism
+      `Prelude.seq` Prelude.rnf inputProcessingConfigurationDescription
+      `Prelude.seq` Prelude.rnf inputSchema
+      `Prelude.seq` Prelude.rnf inputStartingPositionConfiguration
+      `Prelude.seq` Prelude.rnf kinesisFirehoseInputDescription
+      `Prelude.seq` Prelude.rnf kinesisStreamsInputDescription
+      `Prelude.seq` Prelude.rnf namePrefix
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessor.hs b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessor.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.KinesisAnalytics.Types.InputLambdaProcessor
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputLambdaProcessor where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that contains the Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda> function that is used
+-- to preprocess records in the stream, and the ARN of the IAM role that is
+-- used to access the AWS Lambda function.
+--
+-- /See:/ 'newInputLambdaProcessor' smart constructor.
+data InputLambdaProcessor = InputLambdaProcessor'
+  { -- | The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+    -- that operates on records in the stream.
+    --
+    -- To specify an earlier version of the Lambda function than the latest,
+    -- include the Lambda function version in the Lambda function ARN. For more
+    -- information about Lambda ARNs, see
+    -- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+    resourceARN :: Prelude.Text,
+    -- | The ARN of the IAM role that is used to access the AWS Lambda function.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputLambdaProcessor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'inputLambdaProcessor_resourceARN' - The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+-- that operates on records in the stream.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+--
+-- 'roleARN', 'inputLambdaProcessor_roleARN' - The ARN of the IAM role that is used to access the AWS Lambda function.
+newInputLambdaProcessor ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  InputLambdaProcessor
+newInputLambdaProcessor pResourceARN_ pRoleARN_ =
+  InputLambdaProcessor'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+-- that operates on records in the stream.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+inputLambdaProcessor_resourceARN :: Lens.Lens' InputLambdaProcessor Prelude.Text
+inputLambdaProcessor_resourceARN = Lens.lens (\InputLambdaProcessor' {resourceARN} -> resourceARN) (\s@InputLambdaProcessor' {} a -> s {resourceARN = a} :: InputLambdaProcessor)
+
+-- | The ARN of the IAM role that is used to access the AWS Lambda function.
+inputLambdaProcessor_roleARN :: Lens.Lens' InputLambdaProcessor Prelude.Text
+inputLambdaProcessor_roleARN = Lens.lens (\InputLambdaProcessor' {roleARN} -> roleARN) (\s@InputLambdaProcessor' {} a -> s {roleARN = a} :: InputLambdaProcessor)
+
+instance Prelude.Hashable InputLambdaProcessor where
+  hashWithSalt _salt InputLambdaProcessor' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData InputLambdaProcessor where
+  rnf InputLambdaProcessor' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON InputLambdaProcessor where
+  toJSON InputLambdaProcessor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorDescription.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that contains the Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda> function that is used
+-- to preprocess records in the stream, and the ARN of the IAM role that is
+-- used to access the AWS Lambda expression.
+--
+-- /See:/ 'newInputLambdaProcessorDescription' smart constructor.
+data InputLambdaProcessorDescription = InputLambdaProcessorDescription'
+  { -- | The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+    -- that is used to preprocess the records in the stream.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the IAM role that is used to access the AWS Lambda function.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputLambdaProcessorDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'inputLambdaProcessorDescription_resourceARN' - The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+-- that is used to preprocess the records in the stream.
+--
+-- 'roleARN', 'inputLambdaProcessorDescription_roleARN' - The ARN of the IAM role that is used to access the AWS Lambda function.
+newInputLambdaProcessorDescription ::
+  InputLambdaProcessorDescription
+newInputLambdaProcessorDescription =
+  InputLambdaProcessorDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | The ARN of the <https://docs.aws.amazon.com/lambda/ AWS Lambda> function
+-- that is used to preprocess the records in the stream.
+inputLambdaProcessorDescription_resourceARN :: Lens.Lens' InputLambdaProcessorDescription (Prelude.Maybe Prelude.Text)
+inputLambdaProcessorDescription_resourceARN = Lens.lens (\InputLambdaProcessorDescription' {resourceARN} -> resourceARN) (\s@InputLambdaProcessorDescription' {} a -> s {resourceARN = a} :: InputLambdaProcessorDescription)
+
+-- | The ARN of the IAM role that is used to access the AWS Lambda function.
+inputLambdaProcessorDescription_roleARN :: Lens.Lens' InputLambdaProcessorDescription (Prelude.Maybe Prelude.Text)
+inputLambdaProcessorDescription_roleARN = Lens.lens (\InputLambdaProcessorDescription' {roleARN} -> roleARN) (\s@InputLambdaProcessorDescription' {} a -> s {roleARN = a} :: InputLambdaProcessorDescription)
+
+instance
+  Data.FromJSON
+    InputLambdaProcessorDescription
+  where
+  parseJSON =
+    Data.withObject
+      "InputLambdaProcessorDescription"
+      ( \x ->
+          InputLambdaProcessorDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    InputLambdaProcessorDescription
+  where
+  hashWithSalt
+    _salt
+    InputLambdaProcessorDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    InputLambdaProcessorDescription
+  where
+  rnf InputLambdaProcessorDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputLambdaProcessorUpdate.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents an update to the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>
+-- that is used to preprocess the records in the stream.
+--
+-- /See:/ 'newInputLambdaProcessorUpdate' smart constructor.
+data InputLambdaProcessorUpdate = InputLambdaProcessorUpdate'
+  { -- | The Amazon Resource Name (ARN) of the new
+    -- <https://docs.aws.amazon.com/lambda/ AWS Lambda> function that is used
+    -- to preprocess the records in the stream.
+    --
+    -- To specify an earlier version of the Lambda function than the latest,
+    -- include the Lambda function version in the Lambda function ARN. For more
+    -- information about Lambda ARNs, see
+    -- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the new IAM role that is used to access the AWS Lambda
+    -- function.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputLambdaProcessorUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'inputLambdaProcessorUpdate_resourceARNUpdate' - The Amazon Resource Name (ARN) of the new
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda> function that is used
+-- to preprocess the records in the stream.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+--
+-- 'roleARNUpdate', 'inputLambdaProcessorUpdate_roleARNUpdate' - The ARN of the new IAM role that is used to access the AWS Lambda
+-- function.
+newInputLambdaProcessorUpdate ::
+  InputLambdaProcessorUpdate
+newInputLambdaProcessorUpdate =
+  InputLambdaProcessorUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the new
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda> function that is used
+-- to preprocess the records in the stream.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+inputLambdaProcessorUpdate_resourceARNUpdate :: Lens.Lens' InputLambdaProcessorUpdate (Prelude.Maybe Prelude.Text)
+inputLambdaProcessorUpdate_resourceARNUpdate = Lens.lens (\InputLambdaProcessorUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@InputLambdaProcessorUpdate' {} a -> s {resourceARNUpdate = a} :: InputLambdaProcessorUpdate)
+
+-- | The ARN of the new IAM role that is used to access the AWS Lambda
+-- function.
+inputLambdaProcessorUpdate_roleARNUpdate :: Lens.Lens' InputLambdaProcessorUpdate (Prelude.Maybe Prelude.Text)
+inputLambdaProcessorUpdate_roleARNUpdate = Lens.lens (\InputLambdaProcessorUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@InputLambdaProcessorUpdate' {} a -> s {roleARNUpdate = a} :: InputLambdaProcessorUpdate)
+
+instance Prelude.Hashable InputLambdaProcessorUpdate where
+  hashWithSalt _salt InputLambdaProcessorUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData InputLambdaProcessorUpdate where
+  rnf InputLambdaProcessorUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON InputLambdaProcessorUpdate where
+  toJSON InputLambdaProcessorUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputParallelism.hs b/gen/Amazonka/KinesisAnalytics/Types/InputParallelism.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputParallelism.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.KinesisAnalytics.Types.InputParallelism
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputParallelism where
+
+import qualified 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 number of in-application streams to create for a given
+-- streaming source. For information about parallelism, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input>.
+--
+-- /See:/ 'newInputParallelism' smart constructor.
+data InputParallelism = InputParallelism'
+  { -- | Number of in-application streams to create. For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+    count :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputParallelism' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'inputParallelism_count' - Number of in-application streams to create. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+newInputParallelism ::
+  InputParallelism
+newInputParallelism =
+  InputParallelism' {count = Prelude.Nothing}
+
+-- | Number of in-application streams to create. For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+inputParallelism_count :: Lens.Lens' InputParallelism (Prelude.Maybe Prelude.Natural)
+inputParallelism_count = Lens.lens (\InputParallelism' {count} -> count) (\s@InputParallelism' {} a -> s {count = a} :: InputParallelism)
+
+instance Data.FromJSON InputParallelism where
+  parseJSON =
+    Data.withObject
+      "InputParallelism"
+      ( \x ->
+          InputParallelism' Prelude.<$> (x Data..:? "Count")
+      )
+
+instance Prelude.Hashable InputParallelism where
+  hashWithSalt _salt InputParallelism' {..} =
+    _salt `Prelude.hashWithSalt` count
+
+instance Prelude.NFData InputParallelism where
+  rnf InputParallelism' {..} = Prelude.rnf count
+
+instance Data.ToJSON InputParallelism where
+  toJSON InputParallelism' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Count" Data..=) Prelude.<$> count]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputParallelismUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/InputParallelismUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputParallelismUpdate.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.KinesisAnalytics.Types.InputParallelismUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputParallelismUpdate where
+
+import qualified 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 updates to the parallelism count.
+--
+-- /See:/ 'newInputParallelismUpdate' smart constructor.
+data InputParallelismUpdate = InputParallelismUpdate'
+  { -- | Number of in-application streams to create for the specified streaming
+    -- source.
+    countUpdate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputParallelismUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'countUpdate', 'inputParallelismUpdate_countUpdate' - Number of in-application streams to create for the specified streaming
+-- source.
+newInputParallelismUpdate ::
+  InputParallelismUpdate
+newInputParallelismUpdate =
+  InputParallelismUpdate'
+    { countUpdate =
+        Prelude.Nothing
+    }
+
+-- | Number of in-application streams to create for the specified streaming
+-- source.
+inputParallelismUpdate_countUpdate :: Lens.Lens' InputParallelismUpdate (Prelude.Maybe Prelude.Natural)
+inputParallelismUpdate_countUpdate = Lens.lens (\InputParallelismUpdate' {countUpdate} -> countUpdate) (\s@InputParallelismUpdate' {} a -> s {countUpdate = a} :: InputParallelismUpdate)
+
+instance Prelude.Hashable InputParallelismUpdate where
+  hashWithSalt _salt InputParallelismUpdate' {..} =
+    _salt `Prelude.hashWithSalt` countUpdate
+
+instance Prelude.NFData InputParallelismUpdate where
+  rnf InputParallelismUpdate' {..} =
+    Prelude.rnf countUpdate
+
+instance Data.ToJSON InputParallelismUpdate where
+  toJSON InputParallelismUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("CountUpdate" Data..=) Prelude.<$> countUpdate]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfiguration.hs b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfiguration.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.KinesisAnalytics.Types.InputProcessingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputProcessingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessor
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides a description of a processor that is used to preprocess the
+-- records in the stream before being processed by your application code.
+-- Currently, the only input processor available is
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda>.
+--
+-- /See:/ 'newInputProcessingConfiguration' smart constructor.
+data InputProcessingConfiguration = InputProcessingConfiguration'
+  { -- | The
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>
+    -- that is used to preprocess the records in the stream before being
+    -- processed by your application code.
+    inputLambdaProcessor :: InputLambdaProcessor
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputProcessingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputLambdaProcessor', 'inputProcessingConfiguration_inputLambdaProcessor' - The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>
+-- that is used to preprocess the records in the stream before being
+-- processed by your application code.
+newInputProcessingConfiguration ::
+  -- | 'inputLambdaProcessor'
+  InputLambdaProcessor ->
+  InputProcessingConfiguration
+newInputProcessingConfiguration
+  pInputLambdaProcessor_ =
+    InputProcessingConfiguration'
+      { inputLambdaProcessor =
+          pInputLambdaProcessor_
+      }
+
+-- | The
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>
+-- that is used to preprocess the records in the stream before being
+-- processed by your application code.
+inputProcessingConfiguration_inputLambdaProcessor :: Lens.Lens' InputProcessingConfiguration InputLambdaProcessor
+inputProcessingConfiguration_inputLambdaProcessor = Lens.lens (\InputProcessingConfiguration' {inputLambdaProcessor} -> inputLambdaProcessor) (\s@InputProcessingConfiguration' {} a -> s {inputLambdaProcessor = a} :: InputProcessingConfiguration)
+
+instance
+  Prelude.Hashable
+    InputProcessingConfiguration
+  where
+  hashWithSalt _salt InputProcessingConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` inputLambdaProcessor
+
+instance Prelude.NFData InputProcessingConfiguration where
+  rnf InputProcessingConfiguration' {..} =
+    Prelude.rnf inputLambdaProcessor
+
+instance Data.ToJSON InputProcessingConfiguration where
+  toJSON InputProcessingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InputLambdaProcessor"
+                  Data..= inputLambdaProcessor
+              )
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationDescription.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.KinesisAnalytics.Types.InputProcessingConfigurationDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorDescription
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides configuration information about an input processor. Currently,
+-- the only input processor available is
+-- <https://docs.aws.amazon.com/lambda/ AWS Lambda>.
+--
+-- /See:/ 'newInputProcessingConfigurationDescription' smart constructor.
+data InputProcessingConfigurationDescription = InputProcessingConfigurationDescription'
+  { -- | Provides configuration information about the associated
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessorDescription.html InputLambdaProcessorDescription>.
+    inputLambdaProcessorDescription :: Prelude.Maybe InputLambdaProcessorDescription
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputProcessingConfigurationDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputLambdaProcessorDescription', 'inputProcessingConfigurationDescription_inputLambdaProcessorDescription' - Provides configuration information about the associated
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessorDescription.html InputLambdaProcessorDescription>.
+newInputProcessingConfigurationDescription ::
+  InputProcessingConfigurationDescription
+newInputProcessingConfigurationDescription =
+  InputProcessingConfigurationDescription'
+    { inputLambdaProcessorDescription =
+        Prelude.Nothing
+    }
+
+-- | Provides configuration information about the associated
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessorDescription.html InputLambdaProcessorDescription>.
+inputProcessingConfigurationDescription_inputLambdaProcessorDescription :: Lens.Lens' InputProcessingConfigurationDescription (Prelude.Maybe InputLambdaProcessorDescription)
+inputProcessingConfigurationDescription_inputLambdaProcessorDescription = Lens.lens (\InputProcessingConfigurationDescription' {inputLambdaProcessorDescription} -> inputLambdaProcessorDescription) (\s@InputProcessingConfigurationDescription' {} a -> s {inputLambdaProcessorDescription = a} :: InputProcessingConfigurationDescription)
+
+instance
+  Data.FromJSON
+    InputProcessingConfigurationDescription
+  where
+  parseJSON =
+    Data.withObject
+      "InputProcessingConfigurationDescription"
+      ( \x ->
+          InputProcessingConfigurationDescription'
+            Prelude.<$> (x Data..:? "InputLambdaProcessorDescription")
+      )
+
+instance
+  Prelude.Hashable
+    InputProcessingConfigurationDescription
+  where
+  hashWithSalt
+    _salt
+    InputProcessingConfigurationDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` inputLambdaProcessorDescription
+
+instance
+  Prelude.NFData
+    InputProcessingConfigurationDescription
+  where
+  rnf InputProcessingConfigurationDescription' {..} =
+    Prelude.rnf inputLambdaProcessorDescription
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputProcessingConfigurationUpdate.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputLambdaProcessorUpdate
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes updates to an
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputProcessingConfiguration.html InputProcessingConfiguration>.
+--
+-- /See:/ 'newInputProcessingConfigurationUpdate' smart constructor.
+data InputProcessingConfigurationUpdate = InputProcessingConfigurationUpdate'
+  { -- | Provides update information for an
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+    inputLambdaProcessorUpdate :: InputLambdaProcessorUpdate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputProcessingConfigurationUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputLambdaProcessorUpdate', 'inputProcessingConfigurationUpdate_inputLambdaProcessorUpdate' - Provides update information for an
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+newInputProcessingConfigurationUpdate ::
+  -- | 'inputLambdaProcessorUpdate'
+  InputLambdaProcessorUpdate ->
+  InputProcessingConfigurationUpdate
+newInputProcessingConfigurationUpdate
+  pInputLambdaProcessorUpdate_ =
+    InputProcessingConfigurationUpdate'
+      { inputLambdaProcessorUpdate =
+          pInputLambdaProcessorUpdate_
+      }
+
+-- | Provides update information for an
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_InputLambdaProcessor.html InputLambdaProcessor>.
+inputProcessingConfigurationUpdate_inputLambdaProcessorUpdate :: Lens.Lens' InputProcessingConfigurationUpdate InputLambdaProcessorUpdate
+inputProcessingConfigurationUpdate_inputLambdaProcessorUpdate = Lens.lens (\InputProcessingConfigurationUpdate' {inputLambdaProcessorUpdate} -> inputLambdaProcessorUpdate) (\s@InputProcessingConfigurationUpdate' {} a -> s {inputLambdaProcessorUpdate = a} :: InputProcessingConfigurationUpdate)
+
+instance
+  Prelude.Hashable
+    InputProcessingConfigurationUpdate
+  where
+  hashWithSalt
+    _salt
+    InputProcessingConfigurationUpdate' {..} =
+      _salt
+        `Prelude.hashWithSalt` inputLambdaProcessorUpdate
+
+instance
+  Prelude.NFData
+    InputProcessingConfigurationUpdate
+  where
+  rnf InputProcessingConfigurationUpdate' {..} =
+    Prelude.rnf inputLambdaProcessorUpdate
+
+instance
+  Data.ToJSON
+    InputProcessingConfigurationUpdate
+  where
+  toJSON InputProcessingConfigurationUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InputLambdaProcessorUpdate"
+                  Data..= inputLambdaProcessorUpdate
+              )
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputSchemaUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/InputSchemaUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputSchemaUpdate.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.KinesisAnalytics.Types.InputSchemaUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputSchemaUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.RecordColumn
+import Amazonka.KinesisAnalytics.Types.RecordFormat
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes updates for the application\'s input schema.
+--
+-- /See:/ 'newInputSchemaUpdate' smart constructor.
+data InputSchemaUpdate = InputSchemaUpdate'
+  { -- | A list of @RecordColumn@ objects. Each object describes the mapping of
+    -- the streaming source element to the corresponding column in the
+    -- in-application stream.
+    recordColumnUpdates :: Prelude.Maybe (Prelude.NonEmpty RecordColumn),
+    -- | Specifies the encoding of the records in the streaming source. For
+    -- example, UTF-8.
+    recordEncodingUpdate :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the format of the records on the streaming source.
+    recordFormatUpdate :: Prelude.Maybe RecordFormat
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputSchemaUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recordColumnUpdates', 'inputSchemaUpdate_recordColumnUpdates' - A list of @RecordColumn@ objects. Each object describes the mapping of
+-- the streaming source element to the corresponding column in the
+-- in-application stream.
+--
+-- 'recordEncodingUpdate', 'inputSchemaUpdate_recordEncodingUpdate' - Specifies the encoding of the records in the streaming source. For
+-- example, UTF-8.
+--
+-- 'recordFormatUpdate', 'inputSchemaUpdate_recordFormatUpdate' - Specifies the format of the records on the streaming source.
+newInputSchemaUpdate ::
+  InputSchemaUpdate
+newInputSchemaUpdate =
+  InputSchemaUpdate'
+    { recordColumnUpdates =
+        Prelude.Nothing,
+      recordEncodingUpdate = Prelude.Nothing,
+      recordFormatUpdate = Prelude.Nothing
+    }
+
+-- | A list of @RecordColumn@ objects. Each object describes the mapping of
+-- the streaming source element to the corresponding column in the
+-- in-application stream.
+inputSchemaUpdate_recordColumnUpdates :: Lens.Lens' InputSchemaUpdate (Prelude.Maybe (Prelude.NonEmpty RecordColumn))
+inputSchemaUpdate_recordColumnUpdates = Lens.lens (\InputSchemaUpdate' {recordColumnUpdates} -> recordColumnUpdates) (\s@InputSchemaUpdate' {} a -> s {recordColumnUpdates = a} :: InputSchemaUpdate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the encoding of the records in the streaming source. For
+-- example, UTF-8.
+inputSchemaUpdate_recordEncodingUpdate :: Lens.Lens' InputSchemaUpdate (Prelude.Maybe Prelude.Text)
+inputSchemaUpdate_recordEncodingUpdate = Lens.lens (\InputSchemaUpdate' {recordEncodingUpdate} -> recordEncodingUpdate) (\s@InputSchemaUpdate' {} a -> s {recordEncodingUpdate = a} :: InputSchemaUpdate)
+
+-- | Specifies the format of the records on the streaming source.
+inputSchemaUpdate_recordFormatUpdate :: Lens.Lens' InputSchemaUpdate (Prelude.Maybe RecordFormat)
+inputSchemaUpdate_recordFormatUpdate = Lens.lens (\InputSchemaUpdate' {recordFormatUpdate} -> recordFormatUpdate) (\s@InputSchemaUpdate' {} a -> s {recordFormatUpdate = a} :: InputSchemaUpdate)
+
+instance Prelude.Hashable InputSchemaUpdate where
+  hashWithSalt _salt InputSchemaUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` recordColumnUpdates
+      `Prelude.hashWithSalt` recordEncodingUpdate
+      `Prelude.hashWithSalt` recordFormatUpdate
+
+instance Prelude.NFData InputSchemaUpdate where
+  rnf InputSchemaUpdate' {..} =
+    Prelude.rnf recordColumnUpdates
+      `Prelude.seq` Prelude.rnf recordEncodingUpdate
+      `Prelude.seq` Prelude.rnf recordFormatUpdate
+
+instance Data.ToJSON InputSchemaUpdate where
+  toJSON InputSchemaUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RecordColumnUpdates" Data..=)
+              Prelude.<$> recordColumnUpdates,
+            ("RecordEncodingUpdate" Data..=)
+              Prelude.<$> recordEncodingUpdate,
+            ("RecordFormatUpdate" Data..=)
+              Prelude.<$> recordFormatUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputStartingPosition.hs b/gen/Amazonka/KinesisAnalytics/Types/InputStartingPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputStartingPosition.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.KinesisAnalytics.Types.InputStartingPosition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputStartingPosition
+  ( InputStartingPosition
+      ( ..,
+        InputStartingPosition_LAST_STOPPED_POINT,
+        InputStartingPosition_NOW,
+        InputStartingPosition_TRIM_HORIZON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InputStartingPosition = InputStartingPosition'
+  { fromInputStartingPosition ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputStartingPosition_LAST_STOPPED_POINT :: InputStartingPosition
+pattern InputStartingPosition_LAST_STOPPED_POINT = InputStartingPosition' "LAST_STOPPED_POINT"
+
+pattern InputStartingPosition_NOW :: InputStartingPosition
+pattern InputStartingPosition_NOW = InputStartingPosition' "NOW"
+
+pattern InputStartingPosition_TRIM_HORIZON :: InputStartingPosition
+pattern InputStartingPosition_TRIM_HORIZON = InputStartingPosition' "TRIM_HORIZON"
+
+{-# COMPLETE
+  InputStartingPosition_LAST_STOPPED_POINT,
+  InputStartingPosition_NOW,
+  InputStartingPosition_TRIM_HORIZON,
+  InputStartingPosition'
+  #-}
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputStartingPositionConfiguration.hs b/gen/Amazonka/KinesisAnalytics/Types/InputStartingPositionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputStartingPositionConfiguration.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.KinesisAnalytics.Types.InputStartingPositionConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputStartingPositionConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputStartingPosition
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the point at which the application reads from the streaming
+-- source.
+--
+-- /See:/ 'newInputStartingPositionConfiguration' smart constructor.
+data InputStartingPositionConfiguration = InputStartingPositionConfiguration'
+  { -- | The starting position on the stream.
+    --
+    -- -   @NOW@ - Start reading just after the most recent record in the
+    --     stream, start at the request time stamp that the customer issued.
+    --
+    -- -   @TRIM_HORIZON@ - Start reading at the last untrimmed record in the
+    --     stream, which is the oldest record available in the stream. This
+    --     option is not available for an Amazon Kinesis Firehose delivery
+    --     stream.
+    --
+    -- -   @LAST_STOPPED_POINT@ - Resume reading from where the application
+    --     last stopped reading.
+    inputStartingPosition :: Prelude.Maybe InputStartingPosition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputStartingPositionConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputStartingPosition', 'inputStartingPositionConfiguration_inputStartingPosition' - The starting position on the stream.
+--
+-- -   @NOW@ - Start reading just after the most recent record in the
+--     stream, start at the request time stamp that the customer issued.
+--
+-- -   @TRIM_HORIZON@ - Start reading at the last untrimmed record in the
+--     stream, which is the oldest record available in the stream. This
+--     option is not available for an Amazon Kinesis Firehose delivery
+--     stream.
+--
+-- -   @LAST_STOPPED_POINT@ - Resume reading from where the application
+--     last stopped reading.
+newInputStartingPositionConfiguration ::
+  InputStartingPositionConfiguration
+newInputStartingPositionConfiguration =
+  InputStartingPositionConfiguration'
+    { inputStartingPosition =
+        Prelude.Nothing
+    }
+
+-- | The starting position on the stream.
+--
+-- -   @NOW@ - Start reading just after the most recent record in the
+--     stream, start at the request time stamp that the customer issued.
+--
+-- -   @TRIM_HORIZON@ - Start reading at the last untrimmed record in the
+--     stream, which is the oldest record available in the stream. This
+--     option is not available for an Amazon Kinesis Firehose delivery
+--     stream.
+--
+-- -   @LAST_STOPPED_POINT@ - Resume reading from where the application
+--     last stopped reading.
+inputStartingPositionConfiguration_inputStartingPosition :: Lens.Lens' InputStartingPositionConfiguration (Prelude.Maybe InputStartingPosition)
+inputStartingPositionConfiguration_inputStartingPosition = Lens.lens (\InputStartingPositionConfiguration' {inputStartingPosition} -> inputStartingPosition) (\s@InputStartingPositionConfiguration' {} a -> s {inputStartingPosition = a} :: InputStartingPositionConfiguration)
+
+instance
+  Data.FromJSON
+    InputStartingPositionConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "InputStartingPositionConfiguration"
+      ( \x ->
+          InputStartingPositionConfiguration'
+            Prelude.<$> (x Data..:? "InputStartingPosition")
+      )
+
+instance
+  Prelude.Hashable
+    InputStartingPositionConfiguration
+  where
+  hashWithSalt
+    _salt
+    InputStartingPositionConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` inputStartingPosition
+
+instance
+  Prelude.NFData
+    InputStartingPositionConfiguration
+  where
+  rnf InputStartingPositionConfiguration' {..} =
+    Prelude.rnf inputStartingPosition
+
+instance
+  Data.ToJSON
+    InputStartingPositionConfiguration
+  where
+  toJSON InputStartingPositionConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputStartingPosition" Data..=)
+              Prelude.<$> inputStartingPosition
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/InputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/InputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/InputUpdate.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.InputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.InputUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.InputParallelismUpdate
+import Amazonka.KinesisAnalytics.Types.InputProcessingConfigurationUpdate
+import Amazonka.KinesisAnalytics.Types.InputSchemaUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsInputUpdate
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes updates to a specific input configuration (identified by the
+-- @InputId@ of an application).
+--
+-- /See:/ 'newInputUpdate' smart constructor.
+data InputUpdate = InputUpdate'
+  { -- | Describes the parallelism updates (the number in-application streams
+    -- Amazon Kinesis Analytics creates for the specific streaming source).
+    inputParallelismUpdate :: Prelude.Maybe InputParallelismUpdate,
+    -- | Describes updates for an input processing configuration.
+    inputProcessingConfigurationUpdate :: Prelude.Maybe InputProcessingConfigurationUpdate,
+    -- | Describes the data format on the streaming source, and how record
+    -- elements on the streaming source map to columns of the in-application
+    -- stream that is created.
+    inputSchemaUpdate :: Prelude.Maybe InputSchemaUpdate,
+    -- | If an Amazon Kinesis Firehose delivery stream is the streaming source to
+    -- be updated, provides an updated stream ARN and IAM role ARN.
+    kinesisFirehoseInputUpdate :: Prelude.Maybe KinesisFirehoseInputUpdate,
+    -- | If an Amazon Kinesis stream is the streaming source to be updated,
+    -- provides an updated stream Amazon Resource Name (ARN) and IAM role ARN.
+    kinesisStreamsInputUpdate :: Prelude.Maybe KinesisStreamsInputUpdate,
+    -- | Name prefix for in-application streams that Amazon Kinesis Analytics
+    -- creates for the specific streaming source.
+    namePrefixUpdate :: Prelude.Maybe Prelude.Text,
+    -- | Input ID of the application input to be updated.
+    inputId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inputParallelismUpdate', 'inputUpdate_inputParallelismUpdate' - Describes the parallelism updates (the number in-application streams
+-- Amazon Kinesis Analytics creates for the specific streaming source).
+--
+-- 'inputProcessingConfigurationUpdate', 'inputUpdate_inputProcessingConfigurationUpdate' - Describes updates for an input processing configuration.
+--
+-- 'inputSchemaUpdate', 'inputUpdate_inputSchemaUpdate' - Describes the data format on the streaming source, and how record
+-- elements on the streaming source map to columns of the in-application
+-- stream that is created.
+--
+-- 'kinesisFirehoseInputUpdate', 'inputUpdate_kinesisFirehoseInputUpdate' - If an Amazon Kinesis Firehose delivery stream is the streaming source to
+-- be updated, provides an updated stream ARN and IAM role ARN.
+--
+-- 'kinesisStreamsInputUpdate', 'inputUpdate_kinesisStreamsInputUpdate' - If an Amazon Kinesis stream is the streaming source to be updated,
+-- provides an updated stream Amazon Resource Name (ARN) and IAM role ARN.
+--
+-- 'namePrefixUpdate', 'inputUpdate_namePrefixUpdate' - Name prefix for in-application streams that Amazon Kinesis Analytics
+-- creates for the specific streaming source.
+--
+-- 'inputId', 'inputUpdate_inputId' - Input ID of the application input to be updated.
+newInputUpdate ::
+  -- | 'inputId'
+  Prelude.Text ->
+  InputUpdate
+newInputUpdate pInputId_ =
+  InputUpdate'
+    { inputParallelismUpdate =
+        Prelude.Nothing,
+      inputProcessingConfigurationUpdate = Prelude.Nothing,
+      inputSchemaUpdate = Prelude.Nothing,
+      kinesisFirehoseInputUpdate = Prelude.Nothing,
+      kinesisStreamsInputUpdate = Prelude.Nothing,
+      namePrefixUpdate = Prelude.Nothing,
+      inputId = pInputId_
+    }
+
+-- | Describes the parallelism updates (the number in-application streams
+-- Amazon Kinesis Analytics creates for the specific streaming source).
+inputUpdate_inputParallelismUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe InputParallelismUpdate)
+inputUpdate_inputParallelismUpdate = Lens.lens (\InputUpdate' {inputParallelismUpdate} -> inputParallelismUpdate) (\s@InputUpdate' {} a -> s {inputParallelismUpdate = a} :: InputUpdate)
+
+-- | Describes updates for an input processing configuration.
+inputUpdate_inputProcessingConfigurationUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe InputProcessingConfigurationUpdate)
+inputUpdate_inputProcessingConfigurationUpdate = Lens.lens (\InputUpdate' {inputProcessingConfigurationUpdate} -> inputProcessingConfigurationUpdate) (\s@InputUpdate' {} a -> s {inputProcessingConfigurationUpdate = a} :: InputUpdate)
+
+-- | Describes the data format on the streaming source, and how record
+-- elements on the streaming source map to columns of the in-application
+-- stream that is created.
+inputUpdate_inputSchemaUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe InputSchemaUpdate)
+inputUpdate_inputSchemaUpdate = Lens.lens (\InputUpdate' {inputSchemaUpdate} -> inputSchemaUpdate) (\s@InputUpdate' {} a -> s {inputSchemaUpdate = a} :: InputUpdate)
+
+-- | If an Amazon Kinesis Firehose delivery stream is the streaming source to
+-- be updated, provides an updated stream ARN and IAM role ARN.
+inputUpdate_kinesisFirehoseInputUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe KinesisFirehoseInputUpdate)
+inputUpdate_kinesisFirehoseInputUpdate = Lens.lens (\InputUpdate' {kinesisFirehoseInputUpdate} -> kinesisFirehoseInputUpdate) (\s@InputUpdate' {} a -> s {kinesisFirehoseInputUpdate = a} :: InputUpdate)
+
+-- | If an Amazon Kinesis stream is the streaming source to be updated,
+-- provides an updated stream Amazon Resource Name (ARN) and IAM role ARN.
+inputUpdate_kinesisStreamsInputUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe KinesisStreamsInputUpdate)
+inputUpdate_kinesisStreamsInputUpdate = Lens.lens (\InputUpdate' {kinesisStreamsInputUpdate} -> kinesisStreamsInputUpdate) (\s@InputUpdate' {} a -> s {kinesisStreamsInputUpdate = a} :: InputUpdate)
+
+-- | Name prefix for in-application streams that Amazon Kinesis Analytics
+-- creates for the specific streaming source.
+inputUpdate_namePrefixUpdate :: Lens.Lens' InputUpdate (Prelude.Maybe Prelude.Text)
+inputUpdate_namePrefixUpdate = Lens.lens (\InputUpdate' {namePrefixUpdate} -> namePrefixUpdate) (\s@InputUpdate' {} a -> s {namePrefixUpdate = a} :: InputUpdate)
+
+-- | Input ID of the application input to be updated.
+inputUpdate_inputId :: Lens.Lens' InputUpdate Prelude.Text
+inputUpdate_inputId = Lens.lens (\InputUpdate' {inputId} -> inputId) (\s@InputUpdate' {} a -> s {inputId = a} :: InputUpdate)
+
+instance Prelude.Hashable InputUpdate where
+  hashWithSalt _salt InputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputParallelismUpdate
+      `Prelude.hashWithSalt` inputProcessingConfigurationUpdate
+      `Prelude.hashWithSalt` inputSchemaUpdate
+      `Prelude.hashWithSalt` kinesisFirehoseInputUpdate
+      `Prelude.hashWithSalt` kinesisStreamsInputUpdate
+      `Prelude.hashWithSalt` namePrefixUpdate
+      `Prelude.hashWithSalt` inputId
+
+instance Prelude.NFData InputUpdate where
+  rnf InputUpdate' {..} =
+    Prelude.rnf inputParallelismUpdate
+      `Prelude.seq` Prelude.rnf inputProcessingConfigurationUpdate
+      `Prelude.seq` Prelude.rnf inputSchemaUpdate
+      `Prelude.seq` Prelude.rnf kinesisFirehoseInputUpdate
+      `Prelude.seq` Prelude.rnf kinesisStreamsInputUpdate
+      `Prelude.seq` Prelude.rnf namePrefixUpdate
+      `Prelude.seq` Prelude.rnf inputId
+
+instance Data.ToJSON InputUpdate where
+  toJSON InputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputParallelismUpdate" Data..=)
+              Prelude.<$> inputParallelismUpdate,
+            ("InputProcessingConfigurationUpdate" Data..=)
+              Prelude.<$> inputProcessingConfigurationUpdate,
+            ("InputSchemaUpdate" Data..=)
+              Prelude.<$> inputSchemaUpdate,
+            ("KinesisFirehoseInputUpdate" Data..=)
+              Prelude.<$> kinesisFirehoseInputUpdate,
+            ("KinesisStreamsInputUpdate" Data..=)
+              Prelude.<$> kinesisStreamsInputUpdate,
+            ("NamePrefixUpdate" Data..=)
+              Prelude.<$> namePrefixUpdate,
+            Prelude.Just ("InputId" Data..= inputId)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/JSONMappingParameters.hs b/gen/Amazonka/KinesisAnalytics/Types/JSONMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/JSONMappingParameters.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.KinesisAnalytics.Types.JSONMappingParameters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.JSONMappingParameters where
+
+import qualified 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 additional mapping information when JSON is the record format
+-- on the streaming source.
+--
+-- /See:/ 'newJSONMappingParameters' smart constructor.
+data JSONMappingParameters = JSONMappingParameters'
+  { -- | Path to the top-level parent that contains the records.
+    recordRowPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JSONMappingParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recordRowPath', 'jSONMappingParameters_recordRowPath' - Path to the top-level parent that contains the records.
+newJSONMappingParameters ::
+  -- | 'recordRowPath'
+  Prelude.Text ->
+  JSONMappingParameters
+newJSONMappingParameters pRecordRowPath_ =
+  JSONMappingParameters'
+    { recordRowPath =
+        pRecordRowPath_
+    }
+
+-- | Path to the top-level parent that contains the records.
+jSONMappingParameters_recordRowPath :: Lens.Lens' JSONMappingParameters Prelude.Text
+jSONMappingParameters_recordRowPath = Lens.lens (\JSONMappingParameters' {recordRowPath} -> recordRowPath) (\s@JSONMappingParameters' {} a -> s {recordRowPath = a} :: JSONMappingParameters)
+
+instance Data.FromJSON JSONMappingParameters where
+  parseJSON =
+    Data.withObject
+      "JSONMappingParameters"
+      ( \x ->
+          JSONMappingParameters'
+            Prelude.<$> (x Data..: "RecordRowPath")
+      )
+
+instance Prelude.Hashable JSONMappingParameters where
+  hashWithSalt _salt JSONMappingParameters' {..} =
+    _salt `Prelude.hashWithSalt` recordRowPath
+
+instance Prelude.NFData JSONMappingParameters where
+  rnf JSONMappingParameters' {..} =
+    Prelude.rnf recordRowPath
+
+instance Data.ToJSON JSONMappingParameters where
+  toJSON JSONMappingParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("RecordRowPath" Data..= recordRowPath)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInput.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInput.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.KinesisAnalytics.Types.KinesisFirehoseInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Identifies an Amazon Kinesis Firehose delivery stream as the streaming
+-- source. You provide the delivery stream\'s Amazon Resource Name (ARN)
+-- and an IAM role ARN that enables Amazon Kinesis Analytics to access the
+-- stream on your behalf.
+--
+-- /See:/ 'newKinesisFirehoseInput' smart constructor.
+data KinesisFirehoseInput = KinesisFirehoseInput'
+  { -- | ARN of the input delivery stream.
+    resourceARN :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to make sure that the role has the
+    -- necessary permissions to access the stream.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisFirehoseInput_resourceARN' - ARN of the input delivery stream.
+--
+-- 'roleARN', 'kinesisFirehoseInput_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to make sure that the role has the
+-- necessary permissions to access the stream.
+newKinesisFirehoseInput ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  KinesisFirehoseInput
+newKinesisFirehoseInput pResourceARN_ pRoleARN_ =
+  KinesisFirehoseInput'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | ARN of the input delivery stream.
+kinesisFirehoseInput_resourceARN :: Lens.Lens' KinesisFirehoseInput Prelude.Text
+kinesisFirehoseInput_resourceARN = Lens.lens (\KinesisFirehoseInput' {resourceARN} -> resourceARN) (\s@KinesisFirehoseInput' {} a -> s {resourceARN = a} :: KinesisFirehoseInput)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to make sure that the role has the
+-- necessary permissions to access the stream.
+kinesisFirehoseInput_roleARN :: Lens.Lens' KinesisFirehoseInput Prelude.Text
+kinesisFirehoseInput_roleARN = Lens.lens (\KinesisFirehoseInput' {roleARN} -> roleARN) (\s@KinesisFirehoseInput' {} a -> s {roleARN = a} :: KinesisFirehoseInput)
+
+instance Prelude.Hashable KinesisFirehoseInput where
+  hashWithSalt _salt KinesisFirehoseInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData KinesisFirehoseInput where
+  rnf KinesisFirehoseInput' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON KinesisFirehoseInput where
+  toJSON KinesisFirehoseInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputDescription.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.KinesisAnalytics.Types.KinesisFirehoseInputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputDescription where
+
+import qualified 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 Amazon Kinesis Firehose delivery stream that is configured
+-- as the streaming source in the application input configuration.
+--
+-- /See:/ 'newKinesisFirehoseInputDescription' smart constructor.
+data KinesisFirehoseInputDescription = KinesisFirehoseInputDescription'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+    -- stream.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics assumes to access the
+    -- stream.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseInputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisFirehoseInputDescription_resourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream.
+--
+-- 'roleARN', 'kinesisFirehoseInputDescription_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics assumes to access the
+-- stream.
+newKinesisFirehoseInputDescription ::
+  KinesisFirehoseInputDescription
+newKinesisFirehoseInputDescription =
+  KinesisFirehoseInputDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream.
+kinesisFirehoseInputDescription_resourceARN :: Lens.Lens' KinesisFirehoseInputDescription (Prelude.Maybe Prelude.Text)
+kinesisFirehoseInputDescription_resourceARN = Lens.lens (\KinesisFirehoseInputDescription' {resourceARN} -> resourceARN) (\s@KinesisFirehoseInputDescription' {} a -> s {resourceARN = a} :: KinesisFirehoseInputDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics assumes to access the
+-- stream.
+kinesisFirehoseInputDescription_roleARN :: Lens.Lens' KinesisFirehoseInputDescription (Prelude.Maybe Prelude.Text)
+kinesisFirehoseInputDescription_roleARN = Lens.lens (\KinesisFirehoseInputDescription' {roleARN} -> roleARN) (\s@KinesisFirehoseInputDescription' {} a -> s {roleARN = a} :: KinesisFirehoseInputDescription)
+
+instance
+  Data.FromJSON
+    KinesisFirehoseInputDescription
+  where
+  parseJSON =
+    Data.withObject
+      "KinesisFirehoseInputDescription"
+      ( \x ->
+          KinesisFirehoseInputDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    KinesisFirehoseInputDescription
+  where
+  hashWithSalt
+    _salt
+    KinesisFirehoseInputDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    KinesisFirehoseInputDescription
+  where
+  rnf KinesisFirehoseInputDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseInputUpdate.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.KinesisAnalytics.Types.KinesisFirehoseInputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseInputUpdate where
+
+import qualified 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 updating application input configuration, provides information
+-- about an Amazon Kinesis Firehose delivery stream as the streaming
+-- source.
+--
+-- /See:/ 'newKinesisFirehoseInputUpdate' smart constructor.
+data KinesisFirehoseInputUpdate = KinesisFirehoseInputUpdate'
+  { -- | Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose delivery
+    -- stream to read.
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to grant the necessary permissions
+    -- to this role.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseInputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'kinesisFirehoseInputUpdate_resourceARNUpdate' - Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose delivery
+-- stream to read.
+--
+-- 'roleARNUpdate', 'kinesisFirehoseInputUpdate_roleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+newKinesisFirehoseInputUpdate ::
+  KinesisFirehoseInputUpdate
+newKinesisFirehoseInputUpdate =
+  KinesisFirehoseInputUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose delivery
+-- stream to read.
+kinesisFirehoseInputUpdate_resourceARNUpdate :: Lens.Lens' KinesisFirehoseInputUpdate (Prelude.Maybe Prelude.Text)
+kinesisFirehoseInputUpdate_resourceARNUpdate = Lens.lens (\KinesisFirehoseInputUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@KinesisFirehoseInputUpdate' {} a -> s {resourceARNUpdate = a} :: KinesisFirehoseInputUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+kinesisFirehoseInputUpdate_roleARNUpdate :: Lens.Lens' KinesisFirehoseInputUpdate (Prelude.Maybe Prelude.Text)
+kinesisFirehoseInputUpdate_roleARNUpdate = Lens.lens (\KinesisFirehoseInputUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@KinesisFirehoseInputUpdate' {} a -> s {roleARNUpdate = a} :: KinesisFirehoseInputUpdate)
+
+instance Prelude.Hashable KinesisFirehoseInputUpdate where
+  hashWithSalt _salt KinesisFirehoseInputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData KinesisFirehoseInputUpdate where
+  rnf KinesisFirehoseInputUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON KinesisFirehoseInputUpdate where
+  toJSON KinesisFirehoseInputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutput.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutput.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.KinesisAnalytics.Types.KinesisFirehoseOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutput where
+
+import qualified 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 configuring application output, identifies an Amazon Kinesis
+-- Firehose delivery stream as the destination. You provide the stream
+-- Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis
+-- Analytics to write to the stream on your behalf.
+--
+-- /See:/ 'newKinesisFirehoseOutput' smart constructor.
+data KinesisFirehoseOutput = KinesisFirehoseOutput'
+  { -- | ARN of the destination Amazon Kinesis Firehose delivery stream to write
+    -- to.
+    resourceARN :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+    -- the destination stream on your behalf. You need to grant the necessary
+    -- permissions to this role.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisFirehoseOutput_resourceARN' - ARN of the destination Amazon Kinesis Firehose delivery stream to write
+-- to.
+--
+-- 'roleARN', 'kinesisFirehoseOutput_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination stream on your behalf. You need to grant the necessary
+-- permissions to this role.
+newKinesisFirehoseOutput ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  KinesisFirehoseOutput
+newKinesisFirehoseOutput pResourceARN_ pRoleARN_ =
+  KinesisFirehoseOutput'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | ARN of the destination Amazon Kinesis Firehose delivery stream to write
+-- to.
+kinesisFirehoseOutput_resourceARN :: Lens.Lens' KinesisFirehoseOutput Prelude.Text
+kinesisFirehoseOutput_resourceARN = Lens.lens (\KinesisFirehoseOutput' {resourceARN} -> resourceARN) (\s@KinesisFirehoseOutput' {} a -> s {resourceARN = a} :: KinesisFirehoseOutput)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination stream on your behalf. You need to grant the necessary
+-- permissions to this role.
+kinesisFirehoseOutput_roleARN :: Lens.Lens' KinesisFirehoseOutput Prelude.Text
+kinesisFirehoseOutput_roleARN = Lens.lens (\KinesisFirehoseOutput' {roleARN} -> roleARN) (\s@KinesisFirehoseOutput' {} a -> s {roleARN = a} :: KinesisFirehoseOutput)
+
+instance Prelude.Hashable KinesisFirehoseOutput where
+  hashWithSalt _salt KinesisFirehoseOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData KinesisFirehoseOutput where
+  rnf KinesisFirehoseOutput' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON KinesisFirehoseOutput where
+  toJSON KinesisFirehoseOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputDescription.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.KinesisAnalytics.Types.KinesisFirehoseOutputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For an application output, describes the Amazon Kinesis Firehose
+-- delivery stream configured as its destination.
+--
+-- /See:/ 'newKinesisFirehoseOutputDescription' smart constructor.
+data KinesisFirehoseOutputDescription = KinesisFirehoseOutputDescription'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+    -- stream.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseOutputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisFirehoseOutputDescription_resourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream.
+--
+-- 'roleARN', 'kinesisFirehoseOutputDescription_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+newKinesisFirehoseOutputDescription ::
+  KinesisFirehoseOutputDescription
+newKinesisFirehoseOutputDescription =
+  KinesisFirehoseOutputDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream.
+kinesisFirehoseOutputDescription_resourceARN :: Lens.Lens' KinesisFirehoseOutputDescription (Prelude.Maybe Prelude.Text)
+kinesisFirehoseOutputDescription_resourceARN = Lens.lens (\KinesisFirehoseOutputDescription' {resourceARN} -> resourceARN) (\s@KinesisFirehoseOutputDescription' {} a -> s {resourceARN = a} :: KinesisFirehoseOutputDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+kinesisFirehoseOutputDescription_roleARN :: Lens.Lens' KinesisFirehoseOutputDescription (Prelude.Maybe Prelude.Text)
+kinesisFirehoseOutputDescription_roleARN = Lens.lens (\KinesisFirehoseOutputDescription' {roleARN} -> roleARN) (\s@KinesisFirehoseOutputDescription' {} a -> s {roleARN = a} :: KinesisFirehoseOutputDescription)
+
+instance
+  Data.FromJSON
+    KinesisFirehoseOutputDescription
+  where
+  parseJSON =
+    Data.withObject
+      "KinesisFirehoseOutputDescription"
+      ( \x ->
+          KinesisFirehoseOutputDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    KinesisFirehoseOutputDescription
+  where
+  hashWithSalt
+    _salt
+    KinesisFirehoseOutputDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    KinesisFirehoseOutputDescription
+  where
+  rnf KinesisFirehoseOutputDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisFirehoseOutputUpdate.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate where
+
+import qualified 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 updating an output configuration using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_UpdateApplication.html UpdateApplication>
+-- operation, provides information about an Amazon Kinesis Firehose
+-- delivery stream configured as the destination.
+--
+-- /See:/ 'newKinesisFirehoseOutputUpdate' smart constructor.
+data KinesisFirehoseOutputUpdate = KinesisFirehoseOutputUpdate'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+    -- stream to write to.
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to grant the necessary permissions
+    -- to this role.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseOutputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'kinesisFirehoseOutputUpdate_resourceARNUpdate' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream to write to.
+--
+-- 'roleARNUpdate', 'kinesisFirehoseOutputUpdate_roleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+newKinesisFirehoseOutputUpdate ::
+  KinesisFirehoseOutputUpdate
+newKinesisFirehoseOutputUpdate =
+  KinesisFirehoseOutputUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
+-- stream to write to.
+kinesisFirehoseOutputUpdate_resourceARNUpdate :: Lens.Lens' KinesisFirehoseOutputUpdate (Prelude.Maybe Prelude.Text)
+kinesisFirehoseOutputUpdate_resourceARNUpdate = Lens.lens (\KinesisFirehoseOutputUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@KinesisFirehoseOutputUpdate' {} a -> s {resourceARNUpdate = a} :: KinesisFirehoseOutputUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+kinesisFirehoseOutputUpdate_roleARNUpdate :: Lens.Lens' KinesisFirehoseOutputUpdate (Prelude.Maybe Prelude.Text)
+kinesisFirehoseOutputUpdate_roleARNUpdate = Lens.lens (\KinesisFirehoseOutputUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@KinesisFirehoseOutputUpdate' {} a -> s {roleARNUpdate = a} :: KinesisFirehoseOutputUpdate)
+
+instance Prelude.Hashable KinesisFirehoseOutputUpdate where
+  hashWithSalt _salt KinesisFirehoseOutputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData KinesisFirehoseOutputUpdate where
+  rnf KinesisFirehoseOutputUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON KinesisFirehoseOutputUpdate where
+  toJSON KinesisFirehoseOutputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInput.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInput.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.KinesisAnalytics.Types.KinesisStreamsInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Identifies an Amazon Kinesis stream as the streaming source. You provide
+-- the stream\'s Amazon Resource Name (ARN) and an IAM role ARN that
+-- enables Amazon Kinesis Analytics to access the stream on your behalf.
+--
+-- /See:/ 'newKinesisStreamsInput' smart constructor.
+data KinesisStreamsInput = KinesisStreamsInput'
+  { -- | ARN of the input Amazon Kinesis stream to read.
+    resourceARN :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to grant the necessary permissions
+    -- to this role.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisStreamsInput_resourceARN' - ARN of the input Amazon Kinesis stream to read.
+--
+-- 'roleARN', 'kinesisStreamsInput_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+newKinesisStreamsInput ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  KinesisStreamsInput
+newKinesisStreamsInput pResourceARN_ pRoleARN_ =
+  KinesisStreamsInput'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | ARN of the input Amazon Kinesis stream to read.
+kinesisStreamsInput_resourceARN :: Lens.Lens' KinesisStreamsInput Prelude.Text
+kinesisStreamsInput_resourceARN = Lens.lens (\KinesisStreamsInput' {resourceARN} -> resourceARN) (\s@KinesisStreamsInput' {} a -> s {resourceARN = a} :: KinesisStreamsInput)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+kinesisStreamsInput_roleARN :: Lens.Lens' KinesisStreamsInput Prelude.Text
+kinesisStreamsInput_roleARN = Lens.lens (\KinesisStreamsInput' {roleARN} -> roleARN) (\s@KinesisStreamsInput' {} a -> s {roleARN = a} :: KinesisStreamsInput)
+
+instance Prelude.Hashable KinesisStreamsInput where
+  hashWithSalt _salt KinesisStreamsInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData KinesisStreamsInput where
+  rnf KinesisStreamsInput' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON KinesisStreamsInput where
+  toJSON KinesisStreamsInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputDescription.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsInputDescription where
+
+import qualified 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 Amazon Kinesis stream that is configured as the streaming
+-- source in the application input configuration.
+--
+-- /See:/ 'newKinesisStreamsInputDescription' smart constructor.
+data KinesisStreamsInputDescription = KinesisStreamsInputDescription'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsInputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisStreamsInputDescription_resourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+--
+-- 'roleARN', 'kinesisStreamsInputDescription_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+newKinesisStreamsInputDescription ::
+  KinesisStreamsInputDescription
+newKinesisStreamsInputDescription =
+  KinesisStreamsInputDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+kinesisStreamsInputDescription_resourceARN :: Lens.Lens' KinesisStreamsInputDescription (Prelude.Maybe Prelude.Text)
+kinesisStreamsInputDescription_resourceARN = Lens.lens (\KinesisStreamsInputDescription' {resourceARN} -> resourceARN) (\s@KinesisStreamsInputDescription' {} a -> s {resourceARN = a} :: KinesisStreamsInputDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+kinesisStreamsInputDescription_roleARN :: Lens.Lens' KinesisStreamsInputDescription (Prelude.Maybe Prelude.Text)
+kinesisStreamsInputDescription_roleARN = Lens.lens (\KinesisStreamsInputDescription' {roleARN} -> roleARN) (\s@KinesisStreamsInputDescription' {} a -> s {roleARN = a} :: KinesisStreamsInputDescription)
+
+instance Data.FromJSON KinesisStreamsInputDescription where
+  parseJSON =
+    Data.withObject
+      "KinesisStreamsInputDescription"
+      ( \x ->
+          KinesisStreamsInputDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    KinesisStreamsInputDescription
+  where
+  hashWithSalt
+    _salt
+    KinesisStreamsInputDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    KinesisStreamsInputDescription
+  where
+  rnf KinesisStreamsInputDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsInputUpdate.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.KinesisAnalytics.Types.KinesisStreamsInputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsInputUpdate where
+
+import qualified 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 updating application input configuration, provides information
+-- about an Amazon Kinesis stream as the streaming source.
+--
+-- /See:/ 'newKinesisStreamsInputUpdate' smart constructor.
+data KinesisStreamsInputUpdate = KinesisStreamsInputUpdate'
+  { -- | Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to grant the necessary permissions
+    -- to this role.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsInputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'kinesisStreamsInputUpdate_resourceARNUpdate' - Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
+--
+-- 'roleARNUpdate', 'kinesisStreamsInputUpdate_roleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+newKinesisStreamsInputUpdate ::
+  KinesisStreamsInputUpdate
+newKinesisStreamsInputUpdate =
+  KinesisStreamsInputUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
+kinesisStreamsInputUpdate_resourceARNUpdate :: Lens.Lens' KinesisStreamsInputUpdate (Prelude.Maybe Prelude.Text)
+kinesisStreamsInputUpdate_resourceARNUpdate = Lens.lens (\KinesisStreamsInputUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@KinesisStreamsInputUpdate' {} a -> s {resourceARNUpdate = a} :: KinesisStreamsInputUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+kinesisStreamsInputUpdate_roleARNUpdate :: Lens.Lens' KinesisStreamsInputUpdate (Prelude.Maybe Prelude.Text)
+kinesisStreamsInputUpdate_roleARNUpdate = Lens.lens (\KinesisStreamsInputUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@KinesisStreamsInputUpdate' {} a -> s {roleARNUpdate = a} :: KinesisStreamsInputUpdate)
+
+instance Prelude.Hashable KinesisStreamsInputUpdate where
+  hashWithSalt _salt KinesisStreamsInputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData KinesisStreamsInputUpdate where
+  rnf KinesisStreamsInputUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON KinesisStreamsInputUpdate where
+  toJSON KinesisStreamsInputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutput.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutput.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.KinesisAnalytics.Types.KinesisStreamsOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsOutput where
+
+import qualified 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 configuring application output, identifies an Amazon Kinesis stream
+-- as the destination. You provide the stream Amazon Resource Name (ARN)
+-- and also an IAM role ARN that Amazon Kinesis Analytics can use to write
+-- to the stream on your behalf.
+--
+-- /See:/ 'newKinesisStreamsOutput' smart constructor.
+data KinesisStreamsOutput = KinesisStreamsOutput'
+  { -- | ARN of the destination Amazon Kinesis stream to write to.
+    resourceARN :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+    -- the destination stream on your behalf. You need to grant the necessary
+    -- permissions to this role.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisStreamsOutput_resourceARN' - ARN of the destination Amazon Kinesis stream to write to.
+--
+-- 'roleARN', 'kinesisStreamsOutput_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination stream on your behalf. You need to grant the necessary
+-- permissions to this role.
+newKinesisStreamsOutput ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  KinesisStreamsOutput
+newKinesisStreamsOutput pResourceARN_ pRoleARN_ =
+  KinesisStreamsOutput'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | ARN of the destination Amazon Kinesis stream to write to.
+kinesisStreamsOutput_resourceARN :: Lens.Lens' KinesisStreamsOutput Prelude.Text
+kinesisStreamsOutput_resourceARN = Lens.lens (\KinesisStreamsOutput' {resourceARN} -> resourceARN) (\s@KinesisStreamsOutput' {} a -> s {resourceARN = a} :: KinesisStreamsOutput)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination stream on your behalf. You need to grant the necessary
+-- permissions to this role.
+kinesisStreamsOutput_roleARN :: Lens.Lens' KinesisStreamsOutput Prelude.Text
+kinesisStreamsOutput_roleARN = Lens.lens (\KinesisStreamsOutput' {roleARN} -> roleARN) (\s@KinesisStreamsOutput' {} a -> s {roleARN = a} :: KinesisStreamsOutput)
+
+instance Prelude.Hashable KinesisStreamsOutput where
+  hashWithSalt _salt KinesisStreamsOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData KinesisStreamsOutput where
+  rnf KinesisStreamsOutput' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON KinesisStreamsOutput where
+  toJSON KinesisStreamsOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputDescription.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For an application output, describes the Amazon Kinesis stream
+-- configured as its destination.
+--
+-- /See:/ 'newKinesisStreamsOutputDescription' smart constructor.
+data KinesisStreamsOutputDescription = KinesisStreamsOutputDescription'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsOutputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'kinesisStreamsOutputDescription_resourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+--
+-- 'roleARN', 'kinesisStreamsOutputDescription_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+newKinesisStreamsOutputDescription ::
+  KinesisStreamsOutputDescription
+newKinesisStreamsOutputDescription =
+  KinesisStreamsOutputDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
+kinesisStreamsOutputDescription_resourceARN :: Lens.Lens' KinesisStreamsOutputDescription (Prelude.Maybe Prelude.Text)
+kinesisStreamsOutputDescription_resourceARN = Lens.lens (\KinesisStreamsOutputDescription' {resourceARN} -> resourceARN) (\s@KinesisStreamsOutputDescription' {} a -> s {resourceARN = a} :: KinesisStreamsOutputDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream.
+kinesisStreamsOutputDescription_roleARN :: Lens.Lens' KinesisStreamsOutputDescription (Prelude.Maybe Prelude.Text)
+kinesisStreamsOutputDescription_roleARN = Lens.lens (\KinesisStreamsOutputDescription' {roleARN} -> roleARN) (\s@KinesisStreamsOutputDescription' {} a -> s {roleARN = a} :: KinesisStreamsOutputDescription)
+
+instance
+  Data.FromJSON
+    KinesisStreamsOutputDescription
+  where
+  parseJSON =
+    Data.withObject
+      "KinesisStreamsOutputDescription"
+      ( \x ->
+          KinesisStreamsOutputDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    KinesisStreamsOutputDescription
+  where
+  hashWithSalt
+    _salt
+    KinesisStreamsOutputDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceARN
+        `Prelude.hashWithSalt` roleARN
+
+instance
+  Prelude.NFData
+    KinesisStreamsOutputDescription
+  where
+  rnf KinesisStreamsOutputDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/KinesisStreamsOutputUpdate.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate where
+
+import qualified 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 updating an output configuration using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_UpdateApplication.html UpdateApplication>
+-- operation, provides information about an Amazon Kinesis stream
+-- configured as the destination.
+--
+-- /See:/ 'newKinesisStreamsOutputUpdate' smart constructor.
+data KinesisStreamsOutputUpdate = KinesisStreamsOutputUpdate'
+  { -- | Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want
+    -- to write the output.
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+    -- the stream on your behalf. You need to grant the necessary permissions
+    -- to this role.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisStreamsOutputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'kinesisStreamsOutputUpdate_resourceARNUpdate' - Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want
+-- to write the output.
+--
+-- 'roleARNUpdate', 'kinesisStreamsOutputUpdate_roleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+newKinesisStreamsOutputUpdate ::
+  KinesisStreamsOutputUpdate
+newKinesisStreamsOutputUpdate =
+  KinesisStreamsOutputUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want
+-- to write the output.
+kinesisStreamsOutputUpdate_resourceARNUpdate :: Lens.Lens' KinesisStreamsOutputUpdate (Prelude.Maybe Prelude.Text)
+kinesisStreamsOutputUpdate_resourceARNUpdate = Lens.lens (\KinesisStreamsOutputUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@KinesisStreamsOutputUpdate' {} a -> s {resourceARNUpdate = a} :: KinesisStreamsOutputUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
+-- the stream on your behalf. You need to grant the necessary permissions
+-- to this role.
+kinesisStreamsOutputUpdate_roleARNUpdate :: Lens.Lens' KinesisStreamsOutputUpdate (Prelude.Maybe Prelude.Text)
+kinesisStreamsOutputUpdate_roleARNUpdate = Lens.lens (\KinesisStreamsOutputUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@KinesisStreamsOutputUpdate' {} a -> s {roleARNUpdate = a} :: KinesisStreamsOutputUpdate)
+
+instance Prelude.Hashable KinesisStreamsOutputUpdate where
+  hashWithSalt _salt KinesisStreamsOutputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData KinesisStreamsOutputUpdate where
+  rnf KinesisStreamsOutputUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON KinesisStreamsOutputUpdate where
+  toJSON KinesisStreamsOutputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/LambdaOutput.hs b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutput.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.KinesisAnalytics.Types.LambdaOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.LambdaOutput where
+
+import qualified 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 configuring application output, identifies an AWS Lambda function
+-- as the destination. You provide the function Amazon Resource Name (ARN)
+-- and also an IAM role ARN that Amazon Kinesis Analytics can use to write
+-- to the function on your behalf.
+--
+-- /See:/ 'newLambdaOutput' smart constructor.
+data LambdaOutput = LambdaOutput'
+  { -- | Amazon Resource Name (ARN) of the destination Lambda function to write
+    -- to.
+    --
+    -- To specify an earlier version of the Lambda function than the latest,
+    -- include the Lambda function version in the Lambda function ARN. For more
+    -- information about Lambda ARNs, see
+    -- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+    resourceARN :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+    -- the destination function on your behalf. You need to grant the necessary
+    -- permissions to this role.
+    roleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaOutput_resourceARN' - Amazon Resource Name (ARN) of the destination Lambda function to write
+-- to.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+--
+-- 'roleARN', 'lambdaOutput_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function on your behalf. You need to grant the necessary
+-- permissions to this role.
+newLambdaOutput ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'roleARN'
+  Prelude.Text ->
+  LambdaOutput
+newLambdaOutput pResourceARN_ pRoleARN_ =
+  LambdaOutput'
+    { resourceARN = pResourceARN_,
+      roleARN = pRoleARN_
+    }
+
+-- | Amazon Resource Name (ARN) of the destination Lambda function to write
+-- to.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+lambdaOutput_resourceARN :: Lens.Lens' LambdaOutput Prelude.Text
+lambdaOutput_resourceARN = Lens.lens (\LambdaOutput' {resourceARN} -> resourceARN) (\s@LambdaOutput' {} a -> s {resourceARN = a} :: LambdaOutput)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function on your behalf. You need to grant the necessary
+-- permissions to this role.
+lambdaOutput_roleARN :: Lens.Lens' LambdaOutput Prelude.Text
+lambdaOutput_roleARN = Lens.lens (\LambdaOutput' {roleARN} -> roleARN) (\s@LambdaOutput' {} a -> s {roleARN = a} :: LambdaOutput)
+
+instance Prelude.Hashable LambdaOutput where
+  hashWithSalt _salt LambdaOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData LambdaOutput where
+  rnf LambdaOutput' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
+
+instance Data.ToJSON LambdaOutput where
+  toJSON LambdaOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("RoleARN" Data..= roleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputDescription.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.LambdaOutputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.LambdaOutputDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For an application output, describes the AWS Lambda function configured
+-- as its destination.
+--
+-- /See:/ 'newLambdaOutputDescription' smart constructor.
+data LambdaOutputDescription = LambdaOutputDescription'
+  { -- | Amazon Resource Name (ARN) of the destination Lambda function.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+    -- the destination function.
+    roleARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaOutputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaOutputDescription_resourceARN' - Amazon Resource Name (ARN) of the destination Lambda function.
+--
+-- 'roleARN', 'lambdaOutputDescription_roleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function.
+newLambdaOutputDescription ::
+  LambdaOutputDescription
+newLambdaOutputDescription =
+  LambdaOutputDescription'
+    { resourceARN =
+        Prelude.Nothing,
+      roleARN = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the destination Lambda function.
+lambdaOutputDescription_resourceARN :: Lens.Lens' LambdaOutputDescription (Prelude.Maybe Prelude.Text)
+lambdaOutputDescription_resourceARN = Lens.lens (\LambdaOutputDescription' {resourceARN} -> resourceARN) (\s@LambdaOutputDescription' {} a -> s {resourceARN = a} :: LambdaOutputDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function.
+lambdaOutputDescription_roleARN :: Lens.Lens' LambdaOutputDescription (Prelude.Maybe Prelude.Text)
+lambdaOutputDescription_roleARN = Lens.lens (\LambdaOutputDescription' {roleARN} -> roleARN) (\s@LambdaOutputDescription' {} a -> s {roleARN = a} :: LambdaOutputDescription)
+
+instance Data.FromJSON LambdaOutputDescription where
+  parseJSON =
+    Data.withObject
+      "LambdaOutputDescription"
+      ( \x ->
+          LambdaOutputDescription'
+            Prelude.<$> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RoleARN")
+      )
+
+instance Prelude.Hashable LambdaOutputDescription where
+  hashWithSalt _salt LambdaOutputDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` roleARN
+
+instance Prelude.NFData LambdaOutputDescription where
+  rnf LambdaOutputDescription' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf roleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/LambdaOutputUpdate.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.KinesisAnalytics.Types.LambdaOutputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.LambdaOutputUpdate where
+
+import qualified 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 updating an output configuration using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_UpdateApplication.html UpdateApplication>
+-- operation, provides information about an AWS Lambda function configured
+-- as the destination.
+--
+-- /See:/ 'newLambdaOutputUpdate' smart constructor.
+data LambdaOutputUpdate = LambdaOutputUpdate'
+  { -- | Amazon Resource Name (ARN) of the destination Lambda function.
+    --
+    -- To specify an earlier version of the Lambda function than the latest,
+    -- include the Lambda function version in the Lambda function ARN. For more
+    -- information about Lambda ARNs, see
+    -- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+    resourceARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+    -- the destination function on your behalf. You need to grant the necessary
+    -- permissions to this role.
+    roleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaOutputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARNUpdate', 'lambdaOutputUpdate_resourceARNUpdate' - Amazon Resource Name (ARN) of the destination Lambda function.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+--
+-- 'roleARNUpdate', 'lambdaOutputUpdate_roleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function on your behalf. You need to grant the necessary
+-- permissions to this role.
+newLambdaOutputUpdate ::
+  LambdaOutputUpdate
+newLambdaOutputUpdate =
+  LambdaOutputUpdate'
+    { resourceARNUpdate =
+        Prelude.Nothing,
+      roleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the destination Lambda function.
+--
+-- To specify an earlier version of the Lambda function than the latest,
+-- include the Lambda function version in the Lambda function ARN. For more
+-- information about Lambda ARNs, see
+-- </general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda Example ARNs: AWS Lambda>
+lambdaOutputUpdate_resourceARNUpdate :: Lens.Lens' LambdaOutputUpdate (Prelude.Maybe Prelude.Text)
+lambdaOutputUpdate_resourceARNUpdate = Lens.lens (\LambdaOutputUpdate' {resourceARNUpdate} -> resourceARNUpdate) (\s@LambdaOutputUpdate' {} a -> s {resourceARNUpdate = a} :: LambdaOutputUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to
+-- the destination function on your behalf. You need to grant the necessary
+-- permissions to this role.
+lambdaOutputUpdate_roleARNUpdate :: Lens.Lens' LambdaOutputUpdate (Prelude.Maybe Prelude.Text)
+lambdaOutputUpdate_roleARNUpdate = Lens.lens (\LambdaOutputUpdate' {roleARNUpdate} -> roleARNUpdate) (\s@LambdaOutputUpdate' {} a -> s {roleARNUpdate = a} :: LambdaOutputUpdate)
+
+instance Prelude.Hashable LambdaOutputUpdate where
+  hashWithSalt _salt LambdaOutputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARNUpdate
+      `Prelude.hashWithSalt` roleARNUpdate
+
+instance Prelude.NFData LambdaOutputUpdate where
+  rnf LambdaOutputUpdate' {..} =
+    Prelude.rnf resourceARNUpdate
+      `Prelude.seq` Prelude.rnf roleARNUpdate
+
+instance Data.ToJSON LambdaOutputUpdate where
+  toJSON LambdaOutputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceARNUpdate" Data..=)
+              Prelude.<$> resourceARNUpdate,
+            ("RoleARNUpdate" Data..=) Prelude.<$> roleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/MappingParameters.hs b/gen/Amazonka/KinesisAnalytics/Types/MappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/MappingParameters.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.KinesisAnalytics.Types.MappingParameters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.MappingParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.CSVMappingParameters
+import Amazonka.KinesisAnalytics.Types.JSONMappingParameters
+import qualified Amazonka.Prelude as Prelude
+
+-- | When configuring application input at the time of creating or updating
+-- an application, provides additional mapping information specific to the
+-- record format (such as JSON, CSV, or record fields delimited by some
+-- delimiter) on the streaming source.
+--
+-- /See:/ 'newMappingParameters' smart constructor.
+data MappingParameters = MappingParameters'
+  { -- | Provides additional mapping information when the record format uses
+    -- delimiters (for example, CSV).
+    cSVMappingParameters :: Prelude.Maybe CSVMappingParameters,
+    -- | Provides additional mapping information when JSON is the record format
+    -- on the streaming source.
+    jSONMappingParameters :: Prelude.Maybe JSONMappingParameters
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MappingParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cSVMappingParameters', 'mappingParameters_cSVMappingParameters' - Provides additional mapping information when the record format uses
+-- delimiters (for example, CSV).
+--
+-- 'jSONMappingParameters', 'mappingParameters_jSONMappingParameters' - Provides additional mapping information when JSON is the record format
+-- on the streaming source.
+newMappingParameters ::
+  MappingParameters
+newMappingParameters =
+  MappingParameters'
+    { cSVMappingParameters =
+        Prelude.Nothing,
+      jSONMappingParameters = Prelude.Nothing
+    }
+
+-- | Provides additional mapping information when the record format uses
+-- delimiters (for example, CSV).
+mappingParameters_cSVMappingParameters :: Lens.Lens' MappingParameters (Prelude.Maybe CSVMappingParameters)
+mappingParameters_cSVMappingParameters = Lens.lens (\MappingParameters' {cSVMappingParameters} -> cSVMappingParameters) (\s@MappingParameters' {} a -> s {cSVMappingParameters = a} :: MappingParameters)
+
+-- | Provides additional mapping information when JSON is the record format
+-- on the streaming source.
+mappingParameters_jSONMappingParameters :: Lens.Lens' MappingParameters (Prelude.Maybe JSONMappingParameters)
+mappingParameters_jSONMappingParameters = Lens.lens (\MappingParameters' {jSONMappingParameters} -> jSONMappingParameters) (\s@MappingParameters' {} a -> s {jSONMappingParameters = a} :: MappingParameters)
+
+instance Data.FromJSON MappingParameters where
+  parseJSON =
+    Data.withObject
+      "MappingParameters"
+      ( \x ->
+          MappingParameters'
+            Prelude.<$> (x Data..:? "CSVMappingParameters")
+            Prelude.<*> (x Data..:? "JSONMappingParameters")
+      )
+
+instance Prelude.Hashable MappingParameters where
+  hashWithSalt _salt MappingParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` cSVMappingParameters
+      `Prelude.hashWithSalt` jSONMappingParameters
+
+instance Prelude.NFData MappingParameters where
+  rnf MappingParameters' {..} =
+    Prelude.rnf cSVMappingParameters
+      `Prelude.seq` Prelude.rnf jSONMappingParameters
+
+instance Data.ToJSON MappingParameters where
+  toJSON MappingParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CSVMappingParameters" Data..=)
+              Prelude.<$> cSVMappingParameters,
+            ("JSONMappingParameters" Data..=)
+              Prelude.<$> jSONMappingParameters
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/Output.hs b/gen/Amazonka/KinesisAnalytics/Types/Output.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/Output.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.Output
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.Output where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.DestinationSchema
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutput
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutput
+import Amazonka.KinesisAnalytics.Types.LambdaOutput
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes application output configuration in which you identify an
+-- in-application stream and a destination where you want the
+-- in-application stream data to be written. The destination can be an
+-- Amazon Kinesis stream or an Amazon Kinesis Firehose delivery stream.
+--
+-- For limits on how many destinations an application can write and other
+-- limitations, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits>.
+--
+-- /See:/ 'newOutput' smart constructor.
+data Output = Output'
+  { -- | Identifies an Amazon Kinesis Firehose delivery stream as the
+    -- destination.
+    kinesisFirehoseOutput :: Prelude.Maybe KinesisFirehoseOutput,
+    -- | Identifies an Amazon Kinesis stream as the destination.
+    kinesisStreamsOutput :: Prelude.Maybe KinesisStreamsOutput,
+    -- | Identifies an AWS Lambda function as the destination.
+    lambdaOutput :: Prelude.Maybe LambdaOutput,
+    -- | Name of the in-application stream.
+    name :: Prelude.Text,
+    -- | Describes the data format when records are written to the destination.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+    destinationSchema :: DestinationSchema
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Output' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'kinesisFirehoseOutput', 'output_kinesisFirehoseOutput' - Identifies an Amazon Kinesis Firehose delivery stream as the
+-- destination.
+--
+-- 'kinesisStreamsOutput', 'output_kinesisStreamsOutput' - Identifies an Amazon Kinesis stream as the destination.
+--
+-- 'lambdaOutput', 'output_lambdaOutput' - Identifies an AWS Lambda function as the destination.
+--
+-- 'name', 'output_name' - Name of the in-application stream.
+--
+-- 'destinationSchema', 'output_destinationSchema' - Describes the data format when records are written to the destination.
+-- For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+newOutput ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'destinationSchema'
+  DestinationSchema ->
+  Output
+newOutput pName_ pDestinationSchema_ =
+  Output'
+    { kinesisFirehoseOutput = Prelude.Nothing,
+      kinesisStreamsOutput = Prelude.Nothing,
+      lambdaOutput = Prelude.Nothing,
+      name = pName_,
+      destinationSchema = pDestinationSchema_
+    }
+
+-- | Identifies an Amazon Kinesis Firehose delivery stream as the
+-- destination.
+output_kinesisFirehoseOutput :: Lens.Lens' Output (Prelude.Maybe KinesisFirehoseOutput)
+output_kinesisFirehoseOutput = Lens.lens (\Output' {kinesisFirehoseOutput} -> kinesisFirehoseOutput) (\s@Output' {} a -> s {kinesisFirehoseOutput = a} :: Output)
+
+-- | Identifies an Amazon Kinesis stream as the destination.
+output_kinesisStreamsOutput :: Lens.Lens' Output (Prelude.Maybe KinesisStreamsOutput)
+output_kinesisStreamsOutput = Lens.lens (\Output' {kinesisStreamsOutput} -> kinesisStreamsOutput) (\s@Output' {} a -> s {kinesisStreamsOutput = a} :: Output)
+
+-- | Identifies an AWS Lambda function as the destination.
+output_lambdaOutput :: Lens.Lens' Output (Prelude.Maybe LambdaOutput)
+output_lambdaOutput = Lens.lens (\Output' {lambdaOutput} -> lambdaOutput) (\s@Output' {} a -> s {lambdaOutput = a} :: Output)
+
+-- | Name of the in-application stream.
+output_name :: Lens.Lens' Output Prelude.Text
+output_name = Lens.lens (\Output' {name} -> name) (\s@Output' {} a -> s {name = a} :: Output)
+
+-- | Describes the data format when records are written to the destination.
+-- For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+output_destinationSchema :: Lens.Lens' Output DestinationSchema
+output_destinationSchema = Lens.lens (\Output' {destinationSchema} -> destinationSchema) (\s@Output' {} a -> s {destinationSchema = a} :: Output)
+
+instance Prelude.Hashable Output where
+  hashWithSalt _salt Output' {..} =
+    _salt
+      `Prelude.hashWithSalt` kinesisFirehoseOutput
+      `Prelude.hashWithSalt` kinesisStreamsOutput
+      `Prelude.hashWithSalt` lambdaOutput
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` destinationSchema
+
+instance Prelude.NFData Output where
+  rnf Output' {..} =
+    Prelude.rnf kinesisFirehoseOutput
+      `Prelude.seq` Prelude.rnf kinesisStreamsOutput
+      `Prelude.seq` Prelude.rnf lambdaOutput
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf destinationSchema
+
+instance Data.ToJSON Output where
+  toJSON Output' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KinesisFirehoseOutput" Data..=)
+              Prelude.<$> kinesisFirehoseOutput,
+            ("KinesisStreamsOutput" Data..=)
+              Prelude.<$> kinesisStreamsOutput,
+            ("LambdaOutput" Data..=) Prelude.<$> lambdaOutput,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("DestinationSchema" Data..= destinationSchema)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/OutputDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/OutputDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/OutputDescription.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.OutputDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.OutputDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.DestinationSchema
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputDescription
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputDescription
+import Amazonka.KinesisAnalytics.Types.LambdaOutputDescription
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the application output configuration, which includes the
+-- in-application stream name and the destination where the stream data is
+-- written. The destination can be an Amazon Kinesis stream or an Amazon
+-- Kinesis Firehose delivery stream.
+--
+-- /See:/ 'newOutputDescription' smart constructor.
+data OutputDescription = OutputDescription'
+  { -- | Data format used for writing data to the destination.
+    destinationSchema :: Prelude.Maybe DestinationSchema,
+    -- | Describes the Amazon Kinesis Firehose delivery stream configured as the
+    -- destination where output is written.
+    kinesisFirehoseOutputDescription :: Prelude.Maybe KinesisFirehoseOutputDescription,
+    -- | Describes Amazon Kinesis stream configured as the destination where
+    -- output is written.
+    kinesisStreamsOutputDescription :: Prelude.Maybe KinesisStreamsOutputDescription,
+    -- | Describes the AWS Lambda function configured as the destination where
+    -- output is written.
+    lambdaOutputDescription :: Prelude.Maybe LambdaOutputDescription,
+    -- | Name of the in-application stream configured as output.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | A unique identifier for the output configuration.
+    outputId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationSchema', 'outputDescription_destinationSchema' - Data format used for writing data to the destination.
+--
+-- 'kinesisFirehoseOutputDescription', 'outputDescription_kinesisFirehoseOutputDescription' - Describes the Amazon Kinesis Firehose delivery stream configured as the
+-- destination where output is written.
+--
+-- 'kinesisStreamsOutputDescription', 'outputDescription_kinesisStreamsOutputDescription' - Describes Amazon Kinesis stream configured as the destination where
+-- output is written.
+--
+-- 'lambdaOutputDescription', 'outputDescription_lambdaOutputDescription' - Describes the AWS Lambda function configured as the destination where
+-- output is written.
+--
+-- 'name', 'outputDescription_name' - Name of the in-application stream configured as output.
+--
+-- 'outputId', 'outputDescription_outputId' - A unique identifier for the output configuration.
+newOutputDescription ::
+  OutputDescription
+newOutputDescription =
+  OutputDescription'
+    { destinationSchema =
+        Prelude.Nothing,
+      kinesisFirehoseOutputDescription = Prelude.Nothing,
+      kinesisStreamsOutputDescription = Prelude.Nothing,
+      lambdaOutputDescription = Prelude.Nothing,
+      name = Prelude.Nothing,
+      outputId = Prelude.Nothing
+    }
+
+-- | Data format used for writing data to the destination.
+outputDescription_destinationSchema :: Lens.Lens' OutputDescription (Prelude.Maybe DestinationSchema)
+outputDescription_destinationSchema = Lens.lens (\OutputDescription' {destinationSchema} -> destinationSchema) (\s@OutputDescription' {} a -> s {destinationSchema = a} :: OutputDescription)
+
+-- | Describes the Amazon Kinesis Firehose delivery stream configured as the
+-- destination where output is written.
+outputDescription_kinesisFirehoseOutputDescription :: Lens.Lens' OutputDescription (Prelude.Maybe KinesisFirehoseOutputDescription)
+outputDescription_kinesisFirehoseOutputDescription = Lens.lens (\OutputDescription' {kinesisFirehoseOutputDescription} -> kinesisFirehoseOutputDescription) (\s@OutputDescription' {} a -> s {kinesisFirehoseOutputDescription = a} :: OutputDescription)
+
+-- | Describes Amazon Kinesis stream configured as the destination where
+-- output is written.
+outputDescription_kinesisStreamsOutputDescription :: Lens.Lens' OutputDescription (Prelude.Maybe KinesisStreamsOutputDescription)
+outputDescription_kinesisStreamsOutputDescription = Lens.lens (\OutputDescription' {kinesisStreamsOutputDescription} -> kinesisStreamsOutputDescription) (\s@OutputDescription' {} a -> s {kinesisStreamsOutputDescription = a} :: OutputDescription)
+
+-- | Describes the AWS Lambda function configured as the destination where
+-- output is written.
+outputDescription_lambdaOutputDescription :: Lens.Lens' OutputDescription (Prelude.Maybe LambdaOutputDescription)
+outputDescription_lambdaOutputDescription = Lens.lens (\OutputDescription' {lambdaOutputDescription} -> lambdaOutputDescription) (\s@OutputDescription' {} a -> s {lambdaOutputDescription = a} :: OutputDescription)
+
+-- | Name of the in-application stream configured as output.
+outputDescription_name :: Lens.Lens' OutputDescription (Prelude.Maybe Prelude.Text)
+outputDescription_name = Lens.lens (\OutputDescription' {name} -> name) (\s@OutputDescription' {} a -> s {name = a} :: OutputDescription)
+
+-- | A unique identifier for the output configuration.
+outputDescription_outputId :: Lens.Lens' OutputDescription (Prelude.Maybe Prelude.Text)
+outputDescription_outputId = Lens.lens (\OutputDescription' {outputId} -> outputId) (\s@OutputDescription' {} a -> s {outputId = a} :: OutputDescription)
+
+instance Data.FromJSON OutputDescription where
+  parseJSON =
+    Data.withObject
+      "OutputDescription"
+      ( \x ->
+          OutputDescription'
+            Prelude.<$> (x Data..:? "DestinationSchema")
+            Prelude.<*> (x Data..:? "KinesisFirehoseOutputDescription")
+            Prelude.<*> (x Data..:? "KinesisStreamsOutputDescription")
+            Prelude.<*> (x Data..:? "LambdaOutputDescription")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OutputId")
+      )
+
+instance Prelude.Hashable OutputDescription where
+  hashWithSalt _salt OutputDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationSchema
+      `Prelude.hashWithSalt` kinesisFirehoseOutputDescription
+      `Prelude.hashWithSalt` kinesisStreamsOutputDescription
+      `Prelude.hashWithSalt` lambdaOutputDescription
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` outputId
+
+instance Prelude.NFData OutputDescription where
+  rnf OutputDescription' {..} =
+    Prelude.rnf destinationSchema
+      `Prelude.seq` Prelude.rnf kinesisFirehoseOutputDescription
+      `Prelude.seq` Prelude.rnf kinesisStreamsOutputDescription
+      `Prelude.seq` Prelude.rnf lambdaOutputDescription
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf outputId
diff --git a/gen/Amazonka/KinesisAnalytics/Types/OutputUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/OutputUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/OutputUpdate.hs
@@ -0,0 +1,158 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.OutputUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.OutputUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.DestinationSchema
+import Amazonka.KinesisAnalytics.Types.KinesisFirehoseOutputUpdate
+import Amazonka.KinesisAnalytics.Types.KinesisStreamsOutputUpdate
+import Amazonka.KinesisAnalytics.Types.LambdaOutputUpdate
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes updates to the output configuration identified by the
+-- @OutputId@.
+--
+-- /See:/ 'newOutputUpdate' smart constructor.
+data OutputUpdate = OutputUpdate'
+  { -- | Describes the data format when records are written to the destination.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+    destinationSchemaUpdate :: Prelude.Maybe DestinationSchema,
+    -- | Describes an Amazon Kinesis Firehose delivery stream as the destination
+    -- for the output.
+    kinesisFirehoseOutputUpdate :: Prelude.Maybe KinesisFirehoseOutputUpdate,
+    -- | Describes an Amazon Kinesis stream as the destination for the output.
+    kinesisStreamsOutputUpdate :: Prelude.Maybe KinesisStreamsOutputUpdate,
+    -- | Describes an AWS Lambda function as the destination for the output.
+    lambdaOutputUpdate :: Prelude.Maybe LambdaOutputUpdate,
+    -- | If you want to specify a different in-application stream for this output
+    -- configuration, use this field to specify the new in-application stream
+    -- name.
+    nameUpdate :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the specific output configuration that you want to update.
+    outputId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationSchemaUpdate', 'outputUpdate_destinationSchemaUpdate' - Describes the data format when records are written to the destination.
+-- For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+--
+-- 'kinesisFirehoseOutputUpdate', 'outputUpdate_kinesisFirehoseOutputUpdate' - Describes an Amazon Kinesis Firehose delivery stream as the destination
+-- for the output.
+--
+-- 'kinesisStreamsOutputUpdate', 'outputUpdate_kinesisStreamsOutputUpdate' - Describes an Amazon Kinesis stream as the destination for the output.
+--
+-- 'lambdaOutputUpdate', 'outputUpdate_lambdaOutputUpdate' - Describes an AWS Lambda function as the destination for the output.
+--
+-- 'nameUpdate', 'outputUpdate_nameUpdate' - If you want to specify a different in-application stream for this output
+-- configuration, use this field to specify the new in-application stream
+-- name.
+--
+-- 'outputId', 'outputUpdate_outputId' - Identifies the specific output configuration that you want to update.
+newOutputUpdate ::
+  -- | 'outputId'
+  Prelude.Text ->
+  OutputUpdate
+newOutputUpdate pOutputId_ =
+  OutputUpdate'
+    { destinationSchemaUpdate =
+        Prelude.Nothing,
+      kinesisFirehoseOutputUpdate = Prelude.Nothing,
+      kinesisStreamsOutputUpdate = Prelude.Nothing,
+      lambdaOutputUpdate = Prelude.Nothing,
+      nameUpdate = Prelude.Nothing,
+      outputId = pOutputId_
+    }
+
+-- | Describes the data format when records are written to the destination.
+-- For more information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output>.
+outputUpdate_destinationSchemaUpdate :: Lens.Lens' OutputUpdate (Prelude.Maybe DestinationSchema)
+outputUpdate_destinationSchemaUpdate = Lens.lens (\OutputUpdate' {destinationSchemaUpdate} -> destinationSchemaUpdate) (\s@OutputUpdate' {} a -> s {destinationSchemaUpdate = a} :: OutputUpdate)
+
+-- | Describes an Amazon Kinesis Firehose delivery stream as the destination
+-- for the output.
+outputUpdate_kinesisFirehoseOutputUpdate :: Lens.Lens' OutputUpdate (Prelude.Maybe KinesisFirehoseOutputUpdate)
+outputUpdate_kinesisFirehoseOutputUpdate = Lens.lens (\OutputUpdate' {kinesisFirehoseOutputUpdate} -> kinesisFirehoseOutputUpdate) (\s@OutputUpdate' {} a -> s {kinesisFirehoseOutputUpdate = a} :: OutputUpdate)
+
+-- | Describes an Amazon Kinesis stream as the destination for the output.
+outputUpdate_kinesisStreamsOutputUpdate :: Lens.Lens' OutputUpdate (Prelude.Maybe KinesisStreamsOutputUpdate)
+outputUpdate_kinesisStreamsOutputUpdate = Lens.lens (\OutputUpdate' {kinesisStreamsOutputUpdate} -> kinesisStreamsOutputUpdate) (\s@OutputUpdate' {} a -> s {kinesisStreamsOutputUpdate = a} :: OutputUpdate)
+
+-- | Describes an AWS Lambda function as the destination for the output.
+outputUpdate_lambdaOutputUpdate :: Lens.Lens' OutputUpdate (Prelude.Maybe LambdaOutputUpdate)
+outputUpdate_lambdaOutputUpdate = Lens.lens (\OutputUpdate' {lambdaOutputUpdate} -> lambdaOutputUpdate) (\s@OutputUpdate' {} a -> s {lambdaOutputUpdate = a} :: OutputUpdate)
+
+-- | If you want to specify a different in-application stream for this output
+-- configuration, use this field to specify the new in-application stream
+-- name.
+outputUpdate_nameUpdate :: Lens.Lens' OutputUpdate (Prelude.Maybe Prelude.Text)
+outputUpdate_nameUpdate = Lens.lens (\OutputUpdate' {nameUpdate} -> nameUpdate) (\s@OutputUpdate' {} a -> s {nameUpdate = a} :: OutputUpdate)
+
+-- | Identifies the specific output configuration that you want to update.
+outputUpdate_outputId :: Lens.Lens' OutputUpdate Prelude.Text
+outputUpdate_outputId = Lens.lens (\OutputUpdate' {outputId} -> outputId) (\s@OutputUpdate' {} a -> s {outputId = a} :: OutputUpdate)
+
+instance Prelude.Hashable OutputUpdate where
+  hashWithSalt _salt OutputUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationSchemaUpdate
+      `Prelude.hashWithSalt` kinesisFirehoseOutputUpdate
+      `Prelude.hashWithSalt` kinesisStreamsOutputUpdate
+      `Prelude.hashWithSalt` lambdaOutputUpdate
+      `Prelude.hashWithSalt` nameUpdate
+      `Prelude.hashWithSalt` outputId
+
+instance Prelude.NFData OutputUpdate where
+  rnf OutputUpdate' {..} =
+    Prelude.rnf destinationSchemaUpdate
+      `Prelude.seq` Prelude.rnf kinesisFirehoseOutputUpdate
+      `Prelude.seq` Prelude.rnf kinesisStreamsOutputUpdate
+      `Prelude.seq` Prelude.rnf lambdaOutputUpdate
+      `Prelude.seq` Prelude.rnf nameUpdate
+      `Prelude.seq` Prelude.rnf outputId
+
+instance Data.ToJSON OutputUpdate where
+  toJSON OutputUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DestinationSchemaUpdate" Data..=)
+              Prelude.<$> destinationSchemaUpdate,
+            ("KinesisFirehoseOutputUpdate" Data..=)
+              Prelude.<$> kinesisFirehoseOutputUpdate,
+            ("KinesisStreamsOutputUpdate" Data..=)
+              Prelude.<$> kinesisStreamsOutputUpdate,
+            ("LambdaOutputUpdate" Data..=)
+              Prelude.<$> lambdaOutputUpdate,
+            ("NameUpdate" Data..=) Prelude.<$> nameUpdate,
+            Prelude.Just ("OutputId" Data..= outputId)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/RecordColumn.hs b/gen/Amazonka/KinesisAnalytics/Types/RecordColumn.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/RecordColumn.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.KinesisAnalytics.Types.RecordColumn
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.RecordColumn where
+
+import qualified 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 mapping of each data element in the streaming source to
+-- the corresponding column in the in-application stream.
+--
+-- Also used to describe the format of the reference data source.
+--
+-- /See:/ 'newRecordColumn' smart constructor.
+data RecordColumn = RecordColumn'
+  { -- | Reference to the data element in the streaming input or the reference
+    -- data source. This element is required if the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_RecordFormat.html#analytics-Type-RecordFormat-RecordFormatTypel RecordFormatType>
+    -- is @JSON@.
+    mapping :: Prelude.Maybe Prelude.Text,
+    -- | Name of the column created in the in-application input stream or
+    -- reference table.
+    name :: Prelude.Text,
+    -- | Type of column created in the in-application input stream or reference
+    -- table.
+    sqlType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecordColumn' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mapping', 'recordColumn_mapping' - Reference to the data element in the streaming input or the reference
+-- data source. This element is required if the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_RecordFormat.html#analytics-Type-RecordFormat-RecordFormatTypel RecordFormatType>
+-- is @JSON@.
+--
+-- 'name', 'recordColumn_name' - Name of the column created in the in-application input stream or
+-- reference table.
+--
+-- 'sqlType', 'recordColumn_sqlType' - Type of column created in the in-application input stream or reference
+-- table.
+newRecordColumn ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'sqlType'
+  Prelude.Text ->
+  RecordColumn
+newRecordColumn pName_ pSqlType_ =
+  RecordColumn'
+    { mapping = Prelude.Nothing,
+      name = pName_,
+      sqlType = pSqlType_
+    }
+
+-- | Reference to the data element in the streaming input or the reference
+-- data source. This element is required if the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_RecordFormat.html#analytics-Type-RecordFormat-RecordFormatTypel RecordFormatType>
+-- is @JSON@.
+recordColumn_mapping :: Lens.Lens' RecordColumn (Prelude.Maybe Prelude.Text)
+recordColumn_mapping = Lens.lens (\RecordColumn' {mapping} -> mapping) (\s@RecordColumn' {} a -> s {mapping = a} :: RecordColumn)
+
+-- | Name of the column created in the in-application input stream or
+-- reference table.
+recordColumn_name :: Lens.Lens' RecordColumn Prelude.Text
+recordColumn_name = Lens.lens (\RecordColumn' {name} -> name) (\s@RecordColumn' {} a -> s {name = a} :: RecordColumn)
+
+-- | Type of column created in the in-application input stream or reference
+-- table.
+recordColumn_sqlType :: Lens.Lens' RecordColumn Prelude.Text
+recordColumn_sqlType = Lens.lens (\RecordColumn' {sqlType} -> sqlType) (\s@RecordColumn' {} a -> s {sqlType = a} :: RecordColumn)
+
+instance Data.FromJSON RecordColumn where
+  parseJSON =
+    Data.withObject
+      "RecordColumn"
+      ( \x ->
+          RecordColumn'
+            Prelude.<$> (x Data..:? "Mapping")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "SqlType")
+      )
+
+instance Prelude.Hashable RecordColumn where
+  hashWithSalt _salt RecordColumn' {..} =
+    _salt
+      `Prelude.hashWithSalt` mapping
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sqlType
+
+instance Prelude.NFData RecordColumn where
+  rnf RecordColumn' {..} =
+    Prelude.rnf mapping
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sqlType
+
+instance Data.ToJSON RecordColumn where
+  toJSON RecordColumn' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Mapping" Data..=) Prelude.<$> mapping,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("SqlType" Data..= sqlType)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/RecordFormat.hs b/gen/Amazonka/KinesisAnalytics/Types/RecordFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/RecordFormat.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.KinesisAnalytics.Types.RecordFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.RecordFormat where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.MappingParameters
+import Amazonka.KinesisAnalytics.Types.RecordFormatType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the record format and relevant mapping information that should
+-- be applied to schematize the records on the stream.
+--
+-- /See:/ 'newRecordFormat' smart constructor.
+data RecordFormat = RecordFormat'
+  { -- | When configuring application input at the time of creating or updating
+    -- an application, provides additional mapping information specific to the
+    -- record format (such as JSON, CSV, or record fields delimited by some
+    -- delimiter) on the streaming source.
+    mappingParameters :: Prelude.Maybe MappingParameters,
+    -- | The type of record format.
+    recordFormatType :: RecordFormatType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecordFormat' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mappingParameters', 'recordFormat_mappingParameters' - When configuring application input at the time of creating or updating
+-- an application, provides additional mapping information specific to the
+-- record format (such as JSON, CSV, or record fields delimited by some
+-- delimiter) on the streaming source.
+--
+-- 'recordFormatType', 'recordFormat_recordFormatType' - The type of record format.
+newRecordFormat ::
+  -- | 'recordFormatType'
+  RecordFormatType ->
+  RecordFormat
+newRecordFormat pRecordFormatType_ =
+  RecordFormat'
+    { mappingParameters = Prelude.Nothing,
+      recordFormatType = pRecordFormatType_
+    }
+
+-- | When configuring application input at the time of creating or updating
+-- an application, provides additional mapping information specific to the
+-- record format (such as JSON, CSV, or record fields delimited by some
+-- delimiter) on the streaming source.
+recordFormat_mappingParameters :: Lens.Lens' RecordFormat (Prelude.Maybe MappingParameters)
+recordFormat_mappingParameters = Lens.lens (\RecordFormat' {mappingParameters} -> mappingParameters) (\s@RecordFormat' {} a -> s {mappingParameters = a} :: RecordFormat)
+
+-- | The type of record format.
+recordFormat_recordFormatType :: Lens.Lens' RecordFormat RecordFormatType
+recordFormat_recordFormatType = Lens.lens (\RecordFormat' {recordFormatType} -> recordFormatType) (\s@RecordFormat' {} a -> s {recordFormatType = a} :: RecordFormat)
+
+instance Data.FromJSON RecordFormat where
+  parseJSON =
+    Data.withObject
+      "RecordFormat"
+      ( \x ->
+          RecordFormat'
+            Prelude.<$> (x Data..:? "MappingParameters")
+            Prelude.<*> (x Data..: "RecordFormatType")
+      )
+
+instance Prelude.Hashable RecordFormat where
+  hashWithSalt _salt RecordFormat' {..} =
+    _salt
+      `Prelude.hashWithSalt` mappingParameters
+      `Prelude.hashWithSalt` recordFormatType
+
+instance Prelude.NFData RecordFormat where
+  rnf RecordFormat' {..} =
+    Prelude.rnf mappingParameters
+      `Prelude.seq` Prelude.rnf recordFormatType
+
+instance Data.ToJSON RecordFormat where
+  toJSON RecordFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MappingParameters" Data..=)
+              Prelude.<$> mappingParameters,
+            Prelude.Just
+              ("RecordFormatType" Data..= recordFormatType)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/RecordFormatType.hs b/gen/Amazonka/KinesisAnalytics/Types/RecordFormatType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/RecordFormatType.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.KinesisAnalytics.Types.RecordFormatType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.RecordFormatType
+  ( RecordFormatType
+      ( ..,
+        RecordFormatType_CSV,
+        RecordFormatType_JSON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecordFormatType = RecordFormatType'
+  { fromRecordFormatType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RecordFormatType_CSV :: RecordFormatType
+pattern RecordFormatType_CSV = RecordFormatType' "CSV"
+
+pattern RecordFormatType_JSON :: RecordFormatType
+pattern RecordFormatType_JSON = RecordFormatType' "JSON"
+
+{-# COMPLETE
+  RecordFormatType_CSV,
+  RecordFormatType_JSON,
+  RecordFormatType'
+  #-}
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSource.hs b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSource.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.KinesisAnalytics.Types.ReferenceDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ReferenceDataSource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the reference data source by providing the source information
+-- (S3 bucket name and object key name), the resulting in-application table
+-- name that is created, and the necessary schema to map the data elements
+-- in the Amazon S3 object to the in-application table.
+--
+-- /See:/ 'newReferenceDataSource' smart constructor.
+data ReferenceDataSource = ReferenceDataSource'
+  { -- | Identifies the S3 bucket and object that contains the reference data.
+    -- Also identifies the IAM role Amazon Kinesis Analytics can assume to read
+    -- this object on your behalf. An Amazon Kinesis Analytics application
+    -- loads reference data only once. If the data changes, you call the
+    -- @UpdateApplication@ operation to trigger reloading of data into your
+    -- application.
+    s3ReferenceDataSource :: Prelude.Maybe S3ReferenceDataSource,
+    -- | Name of the in-application table to create.
+    tableName :: Prelude.Text,
+    -- | Describes the format of the data in the streaming source, and how each
+    -- data element maps to corresponding columns created in the in-application
+    -- stream.
+    referenceSchema :: SourceSchema
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3ReferenceDataSource', 'referenceDataSource_s3ReferenceDataSource' - Identifies the S3 bucket and object that contains the reference data.
+-- Also identifies the IAM role Amazon Kinesis Analytics can assume to read
+-- this object on your behalf. An Amazon Kinesis Analytics application
+-- loads reference data only once. If the data changes, you call the
+-- @UpdateApplication@ operation to trigger reloading of data into your
+-- application.
+--
+-- 'tableName', 'referenceDataSource_tableName' - Name of the in-application table to create.
+--
+-- 'referenceSchema', 'referenceDataSource_referenceSchema' - Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+newReferenceDataSource ::
+  -- | 'tableName'
+  Prelude.Text ->
+  -- | 'referenceSchema'
+  SourceSchema ->
+  ReferenceDataSource
+newReferenceDataSource pTableName_ pReferenceSchema_ =
+  ReferenceDataSource'
+    { s3ReferenceDataSource =
+        Prelude.Nothing,
+      tableName = pTableName_,
+      referenceSchema = pReferenceSchema_
+    }
+
+-- | Identifies the S3 bucket and object that contains the reference data.
+-- Also identifies the IAM role Amazon Kinesis Analytics can assume to read
+-- this object on your behalf. An Amazon Kinesis Analytics application
+-- loads reference data only once. If the data changes, you call the
+-- @UpdateApplication@ operation to trigger reloading of data into your
+-- application.
+referenceDataSource_s3ReferenceDataSource :: Lens.Lens' ReferenceDataSource (Prelude.Maybe S3ReferenceDataSource)
+referenceDataSource_s3ReferenceDataSource = Lens.lens (\ReferenceDataSource' {s3ReferenceDataSource} -> s3ReferenceDataSource) (\s@ReferenceDataSource' {} a -> s {s3ReferenceDataSource = a} :: ReferenceDataSource)
+
+-- | Name of the in-application table to create.
+referenceDataSource_tableName :: Lens.Lens' ReferenceDataSource Prelude.Text
+referenceDataSource_tableName = Lens.lens (\ReferenceDataSource' {tableName} -> tableName) (\s@ReferenceDataSource' {} a -> s {tableName = a} :: ReferenceDataSource)
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+referenceDataSource_referenceSchema :: Lens.Lens' ReferenceDataSource SourceSchema
+referenceDataSource_referenceSchema = Lens.lens (\ReferenceDataSource' {referenceSchema} -> referenceSchema) (\s@ReferenceDataSource' {} a -> s {referenceSchema = a} :: ReferenceDataSource)
+
+instance Prelude.Hashable ReferenceDataSource where
+  hashWithSalt _salt ReferenceDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3ReferenceDataSource
+      `Prelude.hashWithSalt` tableName
+      `Prelude.hashWithSalt` referenceSchema
+
+instance Prelude.NFData ReferenceDataSource where
+  rnf ReferenceDataSource' {..} =
+    Prelude.rnf s3ReferenceDataSource
+      `Prelude.seq` Prelude.rnf tableName
+      `Prelude.seq` Prelude.rnf referenceSchema
+
+instance Data.ToJSON ReferenceDataSource where
+  toJSON ReferenceDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("S3ReferenceDataSource" Data..=)
+              Prelude.<$> s3ReferenceDataSource,
+            Prelude.Just ("TableName" Data..= tableName),
+            Prelude.Just
+              ("ReferenceSchema" Data..= referenceSchema)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceDescription.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.KinesisAnalytics.Types.ReferenceDataSourceDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ReferenceDataSourceDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the reference data source configured for an application.
+--
+-- /See:/ 'newReferenceDataSourceDescription' smart constructor.
+data ReferenceDataSourceDescription = ReferenceDataSourceDescription'
+  { -- | Describes the format of the data in the streaming source, and how each
+    -- data element maps to corresponding columns created in the in-application
+    -- stream.
+    referenceSchema :: Prelude.Maybe SourceSchema,
+    -- | ID of the reference data source. This is the ID that Amazon Kinesis
+    -- Analytics assigns when you add the reference data source to your
+    -- application using the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>
+    -- operation.
+    referenceId :: Prelude.Text,
+    -- | The in-application table name created by the specific reference data
+    -- source configuration.
+    tableName :: Prelude.Text,
+    -- | Provides the S3 bucket name, the object key name that contains the
+    -- reference data. It also provides the Amazon Resource Name (ARN) of the
+    -- IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3
+    -- object and populate the in-application reference table.
+    s3ReferenceDataSourceDescription :: S3ReferenceDataSourceDescription
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceDataSourceDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'referenceSchema', 'referenceDataSourceDescription_referenceSchema' - Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+--
+-- 'referenceId', 'referenceDataSourceDescription_referenceId' - ID of the reference data source. This is the ID that Amazon Kinesis
+-- Analytics assigns when you add the reference data source to your
+-- application using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>
+-- operation.
+--
+-- 'tableName', 'referenceDataSourceDescription_tableName' - The in-application table name created by the specific reference data
+-- source configuration.
+--
+-- 's3ReferenceDataSourceDescription', 'referenceDataSourceDescription_s3ReferenceDataSourceDescription' - Provides the S3 bucket name, the object key name that contains the
+-- reference data. It also provides the Amazon Resource Name (ARN) of the
+-- IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3
+-- object and populate the in-application reference table.
+newReferenceDataSourceDescription ::
+  -- | 'referenceId'
+  Prelude.Text ->
+  -- | 'tableName'
+  Prelude.Text ->
+  -- | 's3ReferenceDataSourceDescription'
+  S3ReferenceDataSourceDescription ->
+  ReferenceDataSourceDescription
+newReferenceDataSourceDescription
+  pReferenceId_
+  pTableName_
+  pS3ReferenceDataSourceDescription_ =
+    ReferenceDataSourceDescription'
+      { referenceSchema =
+          Prelude.Nothing,
+        referenceId = pReferenceId_,
+        tableName = pTableName_,
+        s3ReferenceDataSourceDescription =
+          pS3ReferenceDataSourceDescription_
+      }
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+referenceDataSourceDescription_referenceSchema :: Lens.Lens' ReferenceDataSourceDescription (Prelude.Maybe SourceSchema)
+referenceDataSourceDescription_referenceSchema = Lens.lens (\ReferenceDataSourceDescription' {referenceSchema} -> referenceSchema) (\s@ReferenceDataSourceDescription' {} a -> s {referenceSchema = a} :: ReferenceDataSourceDescription)
+
+-- | ID of the reference data source. This is the ID that Amazon Kinesis
+-- Analytics assigns when you add the reference data source to your
+-- application using the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_AddApplicationReferenceDataSource.html AddApplicationReferenceDataSource>
+-- operation.
+referenceDataSourceDescription_referenceId :: Lens.Lens' ReferenceDataSourceDescription Prelude.Text
+referenceDataSourceDescription_referenceId = Lens.lens (\ReferenceDataSourceDescription' {referenceId} -> referenceId) (\s@ReferenceDataSourceDescription' {} a -> s {referenceId = a} :: ReferenceDataSourceDescription)
+
+-- | The in-application table name created by the specific reference data
+-- source configuration.
+referenceDataSourceDescription_tableName :: Lens.Lens' ReferenceDataSourceDescription Prelude.Text
+referenceDataSourceDescription_tableName = Lens.lens (\ReferenceDataSourceDescription' {tableName} -> tableName) (\s@ReferenceDataSourceDescription' {} a -> s {tableName = a} :: ReferenceDataSourceDescription)
+
+-- | Provides the S3 bucket name, the object key name that contains the
+-- reference data. It also provides the Amazon Resource Name (ARN) of the
+-- IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3
+-- object and populate the in-application reference table.
+referenceDataSourceDescription_s3ReferenceDataSourceDescription :: Lens.Lens' ReferenceDataSourceDescription S3ReferenceDataSourceDescription
+referenceDataSourceDescription_s3ReferenceDataSourceDescription = Lens.lens (\ReferenceDataSourceDescription' {s3ReferenceDataSourceDescription} -> s3ReferenceDataSourceDescription) (\s@ReferenceDataSourceDescription' {} a -> s {s3ReferenceDataSourceDescription = a} :: ReferenceDataSourceDescription)
+
+instance Data.FromJSON ReferenceDataSourceDescription where
+  parseJSON =
+    Data.withObject
+      "ReferenceDataSourceDescription"
+      ( \x ->
+          ReferenceDataSourceDescription'
+            Prelude.<$> (x Data..:? "ReferenceSchema")
+            Prelude.<*> (x Data..: "ReferenceId")
+            Prelude.<*> (x Data..: "TableName")
+            Prelude.<*> (x Data..: "S3ReferenceDataSourceDescription")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceDataSourceDescription
+  where
+  hashWithSalt
+    _salt
+    ReferenceDataSourceDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` referenceSchema
+        `Prelude.hashWithSalt` referenceId
+        `Prelude.hashWithSalt` tableName
+        `Prelude.hashWithSalt` s3ReferenceDataSourceDescription
+
+instance
+  Prelude.NFData
+    ReferenceDataSourceDescription
+  where
+  rnf ReferenceDataSourceDescription' {..} =
+    Prelude.rnf referenceSchema
+      `Prelude.seq` Prelude.rnf referenceId
+      `Prelude.seq` Prelude.rnf tableName
+      `Prelude.seq` Prelude.rnf s3ReferenceDataSourceDescription
diff --git a/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/ReferenceDataSourceUpdate.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.ReferenceDataSourceUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate
+import Amazonka.KinesisAnalytics.Types.SourceSchema
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you update a reference data source configuration for an
+-- application, this object provides all the updated values (such as the
+-- source bucket name and object key name), the in-application table name
+-- that is created, and updated mapping information that maps the data in
+-- the Amazon S3 object to the in-application reference table that is
+-- created.
+--
+-- /See:/ 'newReferenceDataSourceUpdate' smart constructor.
+data ReferenceDataSourceUpdate = ReferenceDataSourceUpdate'
+  { -- | Describes the format of the data in the streaming source, and how each
+    -- data element maps to corresponding columns created in the in-application
+    -- stream.
+    referenceSchemaUpdate :: Prelude.Maybe SourceSchema,
+    -- | Describes the S3 bucket name, object key name, and IAM role that Amazon
+    -- Kinesis Analytics can assume to read the Amazon S3 object on your behalf
+    -- and populate the in-application reference table.
+    s3ReferenceDataSourceUpdate :: Prelude.Maybe S3ReferenceDataSourceUpdate,
+    -- | In-application table name that is created by this update.
+    tableNameUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ID of the reference data source being updated. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get this value.
+    referenceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceDataSourceUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'referenceSchemaUpdate', 'referenceDataSourceUpdate_referenceSchemaUpdate' - Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+--
+-- 's3ReferenceDataSourceUpdate', 'referenceDataSourceUpdate_s3ReferenceDataSourceUpdate' - Describes the S3 bucket name, object key name, and IAM role that Amazon
+-- Kinesis Analytics can assume to read the Amazon S3 object on your behalf
+-- and populate the in-application reference table.
+--
+-- 'tableNameUpdate', 'referenceDataSourceUpdate_tableNameUpdate' - In-application table name that is created by this update.
+--
+-- 'referenceId', 'referenceDataSourceUpdate_referenceId' - ID of the reference data source being updated. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get this value.
+newReferenceDataSourceUpdate ::
+  -- | 'referenceId'
+  Prelude.Text ->
+  ReferenceDataSourceUpdate
+newReferenceDataSourceUpdate pReferenceId_ =
+  ReferenceDataSourceUpdate'
+    { referenceSchemaUpdate =
+        Prelude.Nothing,
+      s3ReferenceDataSourceUpdate = Prelude.Nothing,
+      tableNameUpdate = Prelude.Nothing,
+      referenceId = pReferenceId_
+    }
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+referenceDataSourceUpdate_referenceSchemaUpdate :: Lens.Lens' ReferenceDataSourceUpdate (Prelude.Maybe SourceSchema)
+referenceDataSourceUpdate_referenceSchemaUpdate = Lens.lens (\ReferenceDataSourceUpdate' {referenceSchemaUpdate} -> referenceSchemaUpdate) (\s@ReferenceDataSourceUpdate' {} a -> s {referenceSchemaUpdate = a} :: ReferenceDataSourceUpdate)
+
+-- | Describes the S3 bucket name, object key name, and IAM role that Amazon
+-- Kinesis Analytics can assume to read the Amazon S3 object on your behalf
+-- and populate the in-application reference table.
+referenceDataSourceUpdate_s3ReferenceDataSourceUpdate :: Lens.Lens' ReferenceDataSourceUpdate (Prelude.Maybe S3ReferenceDataSourceUpdate)
+referenceDataSourceUpdate_s3ReferenceDataSourceUpdate = Lens.lens (\ReferenceDataSourceUpdate' {s3ReferenceDataSourceUpdate} -> s3ReferenceDataSourceUpdate) (\s@ReferenceDataSourceUpdate' {} a -> s {s3ReferenceDataSourceUpdate = a} :: ReferenceDataSourceUpdate)
+
+-- | In-application table name that is created by this update.
+referenceDataSourceUpdate_tableNameUpdate :: Lens.Lens' ReferenceDataSourceUpdate (Prelude.Maybe Prelude.Text)
+referenceDataSourceUpdate_tableNameUpdate = Lens.lens (\ReferenceDataSourceUpdate' {tableNameUpdate} -> tableNameUpdate) (\s@ReferenceDataSourceUpdate' {} a -> s {tableNameUpdate = a} :: ReferenceDataSourceUpdate)
+
+-- | ID of the reference data source being updated. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get this value.
+referenceDataSourceUpdate_referenceId :: Lens.Lens' ReferenceDataSourceUpdate Prelude.Text
+referenceDataSourceUpdate_referenceId = Lens.lens (\ReferenceDataSourceUpdate' {referenceId} -> referenceId) (\s@ReferenceDataSourceUpdate' {} a -> s {referenceId = a} :: ReferenceDataSourceUpdate)
+
+instance Prelude.Hashable ReferenceDataSourceUpdate where
+  hashWithSalt _salt ReferenceDataSourceUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` referenceSchemaUpdate
+      `Prelude.hashWithSalt` s3ReferenceDataSourceUpdate
+      `Prelude.hashWithSalt` tableNameUpdate
+      `Prelude.hashWithSalt` referenceId
+
+instance Prelude.NFData ReferenceDataSourceUpdate where
+  rnf ReferenceDataSourceUpdate' {..} =
+    Prelude.rnf referenceSchemaUpdate
+      `Prelude.seq` Prelude.rnf s3ReferenceDataSourceUpdate
+      `Prelude.seq` Prelude.rnf tableNameUpdate
+      `Prelude.seq` Prelude.rnf referenceId
+
+instance Data.ToJSON ReferenceDataSourceUpdate where
+  toJSON ReferenceDataSourceUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ReferenceSchemaUpdate" Data..=)
+              Prelude.<$> referenceSchemaUpdate,
+            ("S3ReferenceDataSourceUpdate" Data..=)
+              Prelude.<$> s3ReferenceDataSourceUpdate,
+            ("TableNameUpdate" Data..=)
+              Prelude.<$> tableNameUpdate,
+            Prelude.Just ("ReferenceId" Data..= referenceId)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/S3Configuration.hs b/gen/Amazonka/KinesisAnalytics/Types/S3Configuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/S3Configuration.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.S3Configuration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.S3Configuration where
+
+import qualified 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 a description of an Amazon S3 data source, including the Amazon
+-- Resource Name (ARN) of the S3 bucket, the ARN of the IAM role that is
+-- used to access the bucket, and the name of the Amazon S3 object that
+-- contains the data.
+--
+-- /See:/ 'newS3Configuration' smart constructor.
+data S3Configuration = S3Configuration'
+  { -- | IAM ARN of the role used to access the data.
+    roleARN :: Prelude.Text,
+    -- | ARN of the S3 bucket that contains the data.
+    bucketARN :: Prelude.Text,
+    -- | The name of the object that contains the data.
+    fileKey :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Configuration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 's3Configuration_roleARN' - IAM ARN of the role used to access the data.
+--
+-- 'bucketARN', 's3Configuration_bucketARN' - ARN of the S3 bucket that contains the data.
+--
+-- 'fileKey', 's3Configuration_fileKey' - The name of the object that contains the data.
+newS3Configuration ::
+  -- | 'roleARN'
+  Prelude.Text ->
+  -- | 'bucketARN'
+  Prelude.Text ->
+  -- | 'fileKey'
+  Prelude.Text ->
+  S3Configuration
+newS3Configuration pRoleARN_ pBucketARN_ pFileKey_ =
+  S3Configuration'
+    { roleARN = pRoleARN_,
+      bucketARN = pBucketARN_,
+      fileKey = pFileKey_
+    }
+
+-- | IAM ARN of the role used to access the data.
+s3Configuration_roleARN :: Lens.Lens' S3Configuration Prelude.Text
+s3Configuration_roleARN = Lens.lens (\S3Configuration' {roleARN} -> roleARN) (\s@S3Configuration' {} a -> s {roleARN = a} :: S3Configuration)
+
+-- | ARN of the S3 bucket that contains the data.
+s3Configuration_bucketARN :: Lens.Lens' S3Configuration Prelude.Text
+s3Configuration_bucketARN = Lens.lens (\S3Configuration' {bucketARN} -> bucketARN) (\s@S3Configuration' {} a -> s {bucketARN = a} :: S3Configuration)
+
+-- | The name of the object that contains the data.
+s3Configuration_fileKey :: Lens.Lens' S3Configuration Prelude.Text
+s3Configuration_fileKey = Lens.lens (\S3Configuration' {fileKey} -> fileKey) (\s@S3Configuration' {} a -> s {fileKey = a} :: S3Configuration)
+
+instance Prelude.Hashable S3Configuration where
+  hashWithSalt _salt S3Configuration' {..} =
+    _salt
+      `Prelude.hashWithSalt` roleARN
+      `Prelude.hashWithSalt` bucketARN
+      `Prelude.hashWithSalt` fileKey
+
+instance Prelude.NFData S3Configuration where
+  rnf S3Configuration' {..} =
+    Prelude.rnf roleARN
+      `Prelude.seq` Prelude.rnf bucketARN
+      `Prelude.seq` Prelude.rnf fileKey
+
+instance Data.ToJSON S3Configuration where
+  toJSON S3Configuration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("RoleARN" Data..= roleARN),
+            Prelude.Just ("BucketARN" Data..= bucketARN),
+            Prelude.Just ("FileKey" Data..= fileKey)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSource.hs b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSource.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.S3ReferenceDataSource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Identifies the S3 bucket and object that contains the reference data.
+-- Also identifies the IAM role Amazon Kinesis Analytics can assume to read
+-- this object on your behalf.
+--
+-- An Amazon Kinesis Analytics application loads reference data only once.
+-- If the data changes, you call the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_UpdateApplication.html UpdateApplication>
+-- operation to trigger reloading of data into your application.
+--
+-- /See:/ 'newS3ReferenceDataSource' smart constructor.
+data S3ReferenceDataSource = S3ReferenceDataSource'
+  { -- | Amazon Resource Name (ARN) of the S3 bucket.
+    bucketARN :: Prelude.Text,
+    -- | Object key name containing reference data.
+    fileKey :: Prelude.Text,
+    -- | ARN of the IAM role that the service can assume to read data on your
+    -- behalf. This role must have permission for the @s3:GetObject@ action on
+    -- the object and trust policy that allows Amazon Kinesis Analytics service
+    -- principal to assume this role.
+    referenceRoleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3ReferenceDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketARN', 's3ReferenceDataSource_bucketARN' - Amazon Resource Name (ARN) of the S3 bucket.
+--
+-- 'fileKey', 's3ReferenceDataSource_fileKey' - Object key name containing reference data.
+--
+-- 'referenceRoleARN', 's3ReferenceDataSource_referenceRoleARN' - ARN of the IAM role that the service can assume to read data on your
+-- behalf. This role must have permission for the @s3:GetObject@ action on
+-- the object and trust policy that allows Amazon Kinesis Analytics service
+-- principal to assume this role.
+newS3ReferenceDataSource ::
+  -- | 'bucketARN'
+  Prelude.Text ->
+  -- | 'fileKey'
+  Prelude.Text ->
+  -- | 'referenceRoleARN'
+  Prelude.Text ->
+  S3ReferenceDataSource
+newS3ReferenceDataSource
+  pBucketARN_
+  pFileKey_
+  pReferenceRoleARN_ =
+    S3ReferenceDataSource'
+      { bucketARN = pBucketARN_,
+        fileKey = pFileKey_,
+        referenceRoleARN = pReferenceRoleARN_
+      }
+
+-- | Amazon Resource Name (ARN) of the S3 bucket.
+s3ReferenceDataSource_bucketARN :: Lens.Lens' S3ReferenceDataSource Prelude.Text
+s3ReferenceDataSource_bucketARN = Lens.lens (\S3ReferenceDataSource' {bucketARN} -> bucketARN) (\s@S3ReferenceDataSource' {} a -> s {bucketARN = a} :: S3ReferenceDataSource)
+
+-- | Object key name containing reference data.
+s3ReferenceDataSource_fileKey :: Lens.Lens' S3ReferenceDataSource Prelude.Text
+s3ReferenceDataSource_fileKey = Lens.lens (\S3ReferenceDataSource' {fileKey} -> fileKey) (\s@S3ReferenceDataSource' {} a -> s {fileKey = a} :: S3ReferenceDataSource)
+
+-- | ARN of the IAM role that the service can assume to read data on your
+-- behalf. This role must have permission for the @s3:GetObject@ action on
+-- the object and trust policy that allows Amazon Kinesis Analytics service
+-- principal to assume this role.
+s3ReferenceDataSource_referenceRoleARN :: Lens.Lens' S3ReferenceDataSource Prelude.Text
+s3ReferenceDataSource_referenceRoleARN = Lens.lens (\S3ReferenceDataSource' {referenceRoleARN} -> referenceRoleARN) (\s@S3ReferenceDataSource' {} a -> s {referenceRoleARN = a} :: S3ReferenceDataSource)
+
+instance Prelude.Hashable S3ReferenceDataSource where
+  hashWithSalt _salt S3ReferenceDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketARN
+      `Prelude.hashWithSalt` fileKey
+      `Prelude.hashWithSalt` referenceRoleARN
+
+instance Prelude.NFData S3ReferenceDataSource where
+  rnf S3ReferenceDataSource' {..} =
+    Prelude.rnf bucketARN
+      `Prelude.seq` Prelude.rnf fileKey
+      `Prelude.seq` Prelude.rnf referenceRoleARN
+
+instance Data.ToJSON S3ReferenceDataSource where
+  toJSON S3ReferenceDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("BucketARN" Data..= bucketARN),
+            Prelude.Just ("FileKey" Data..= fileKey),
+            Prelude.Just
+              ("ReferenceRoleARN" Data..= referenceRoleARN)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceDescription.hs b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceDescription.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides the bucket name and object key name that stores the reference
+-- data.
+--
+-- /See:/ 'newS3ReferenceDataSourceDescription' smart constructor.
+data S3ReferenceDataSourceDescription = S3ReferenceDataSourceDescription'
+  { -- | Amazon Resource Name (ARN) of the S3 bucket.
+    bucketARN :: Prelude.Text,
+    -- | Amazon S3 object key name.
+    fileKey :: Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+    -- Amazon S3 object on your behalf to populate the in-application reference
+    -- table.
+    referenceRoleARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3ReferenceDataSourceDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketARN', 's3ReferenceDataSourceDescription_bucketARN' - Amazon Resource Name (ARN) of the S3 bucket.
+--
+-- 'fileKey', 's3ReferenceDataSourceDescription_fileKey' - Amazon S3 object key name.
+--
+-- 'referenceRoleARN', 's3ReferenceDataSourceDescription_referenceRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+-- Amazon S3 object on your behalf to populate the in-application reference
+-- table.
+newS3ReferenceDataSourceDescription ::
+  -- | 'bucketARN'
+  Prelude.Text ->
+  -- | 'fileKey'
+  Prelude.Text ->
+  -- | 'referenceRoleARN'
+  Prelude.Text ->
+  S3ReferenceDataSourceDescription
+newS3ReferenceDataSourceDescription
+  pBucketARN_
+  pFileKey_
+  pReferenceRoleARN_ =
+    S3ReferenceDataSourceDescription'
+      { bucketARN =
+          pBucketARN_,
+        fileKey = pFileKey_,
+        referenceRoleARN = pReferenceRoleARN_
+      }
+
+-- | Amazon Resource Name (ARN) of the S3 bucket.
+s3ReferenceDataSourceDescription_bucketARN :: Lens.Lens' S3ReferenceDataSourceDescription Prelude.Text
+s3ReferenceDataSourceDescription_bucketARN = Lens.lens (\S3ReferenceDataSourceDescription' {bucketARN} -> bucketARN) (\s@S3ReferenceDataSourceDescription' {} a -> s {bucketARN = a} :: S3ReferenceDataSourceDescription)
+
+-- | Amazon S3 object key name.
+s3ReferenceDataSourceDescription_fileKey :: Lens.Lens' S3ReferenceDataSourceDescription Prelude.Text
+s3ReferenceDataSourceDescription_fileKey = Lens.lens (\S3ReferenceDataSourceDescription' {fileKey} -> fileKey) (\s@S3ReferenceDataSourceDescription' {} a -> s {fileKey = a} :: S3ReferenceDataSourceDescription)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+-- Amazon S3 object on your behalf to populate the in-application reference
+-- table.
+s3ReferenceDataSourceDescription_referenceRoleARN :: Lens.Lens' S3ReferenceDataSourceDescription Prelude.Text
+s3ReferenceDataSourceDescription_referenceRoleARN = Lens.lens (\S3ReferenceDataSourceDescription' {referenceRoleARN} -> referenceRoleARN) (\s@S3ReferenceDataSourceDescription' {} a -> s {referenceRoleARN = a} :: S3ReferenceDataSourceDescription)
+
+instance
+  Data.FromJSON
+    S3ReferenceDataSourceDescription
+  where
+  parseJSON =
+    Data.withObject
+      "S3ReferenceDataSourceDescription"
+      ( \x ->
+          S3ReferenceDataSourceDescription'
+            Prelude.<$> (x Data..: "BucketARN")
+            Prelude.<*> (x Data..: "FileKey")
+            Prelude.<*> (x Data..: "ReferenceRoleARN")
+      )
+
+instance
+  Prelude.Hashable
+    S3ReferenceDataSourceDescription
+  where
+  hashWithSalt
+    _salt
+    S3ReferenceDataSourceDescription' {..} =
+      _salt
+        `Prelude.hashWithSalt` bucketARN
+        `Prelude.hashWithSalt` fileKey
+        `Prelude.hashWithSalt` referenceRoleARN
+
+instance
+  Prelude.NFData
+    S3ReferenceDataSourceDescription
+  where
+  rnf S3ReferenceDataSourceDescription' {..} =
+    Prelude.rnf bucketARN
+      `Prelude.seq` Prelude.rnf fileKey
+      `Prelude.seq` Prelude.rnf referenceRoleARN
diff --git a/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceUpdate.hs b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/S3ReferenceDataSourceUpdate.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.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.S3ReferenceDataSourceUpdate where
+
+import qualified 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 S3 bucket name, object key name, and IAM role that Amazon
+-- Kinesis Analytics can assume to read the Amazon S3 object on your behalf
+-- and populate the in-application reference table.
+--
+-- /See:/ 'newS3ReferenceDataSourceUpdate' smart constructor.
+data S3ReferenceDataSourceUpdate = S3ReferenceDataSourceUpdate'
+  { -- | Amazon Resource Name (ARN) of the S3 bucket.
+    bucketARNUpdate :: Prelude.Maybe Prelude.Text,
+    -- | Object key name.
+    fileKeyUpdate :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+    -- Amazon S3 object and populate the in-application.
+    referenceRoleARNUpdate :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3ReferenceDataSourceUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketARNUpdate', 's3ReferenceDataSourceUpdate_bucketARNUpdate' - Amazon Resource Name (ARN) of the S3 bucket.
+--
+-- 'fileKeyUpdate', 's3ReferenceDataSourceUpdate_fileKeyUpdate' - Object key name.
+--
+-- 'referenceRoleARNUpdate', 's3ReferenceDataSourceUpdate_referenceRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+-- Amazon S3 object and populate the in-application.
+newS3ReferenceDataSourceUpdate ::
+  S3ReferenceDataSourceUpdate
+newS3ReferenceDataSourceUpdate =
+  S3ReferenceDataSourceUpdate'
+    { bucketARNUpdate =
+        Prelude.Nothing,
+      fileKeyUpdate = Prelude.Nothing,
+      referenceRoleARNUpdate = Prelude.Nothing
+    }
+
+-- | Amazon Resource Name (ARN) of the S3 bucket.
+s3ReferenceDataSourceUpdate_bucketARNUpdate :: Lens.Lens' S3ReferenceDataSourceUpdate (Prelude.Maybe Prelude.Text)
+s3ReferenceDataSourceUpdate_bucketARNUpdate = Lens.lens (\S3ReferenceDataSourceUpdate' {bucketARNUpdate} -> bucketARNUpdate) (\s@S3ReferenceDataSourceUpdate' {} a -> s {bucketARNUpdate = a} :: S3ReferenceDataSourceUpdate)
+
+-- | Object key name.
+s3ReferenceDataSourceUpdate_fileKeyUpdate :: Lens.Lens' S3ReferenceDataSourceUpdate (Prelude.Maybe Prelude.Text)
+s3ReferenceDataSourceUpdate_fileKeyUpdate = Lens.lens (\S3ReferenceDataSourceUpdate' {fileKeyUpdate} -> fileKeyUpdate) (\s@S3ReferenceDataSourceUpdate' {} a -> s {fileKeyUpdate = a} :: S3ReferenceDataSourceUpdate)
+
+-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the
+-- Amazon S3 object and populate the in-application.
+s3ReferenceDataSourceUpdate_referenceRoleARNUpdate :: Lens.Lens' S3ReferenceDataSourceUpdate (Prelude.Maybe Prelude.Text)
+s3ReferenceDataSourceUpdate_referenceRoleARNUpdate = Lens.lens (\S3ReferenceDataSourceUpdate' {referenceRoleARNUpdate} -> referenceRoleARNUpdate) (\s@S3ReferenceDataSourceUpdate' {} a -> s {referenceRoleARNUpdate = a} :: S3ReferenceDataSourceUpdate)
+
+instance Prelude.Hashable S3ReferenceDataSourceUpdate where
+  hashWithSalt _salt S3ReferenceDataSourceUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketARNUpdate
+      `Prelude.hashWithSalt` fileKeyUpdate
+      `Prelude.hashWithSalt` referenceRoleARNUpdate
+
+instance Prelude.NFData S3ReferenceDataSourceUpdate where
+  rnf S3ReferenceDataSourceUpdate' {..} =
+    Prelude.rnf bucketARNUpdate
+      `Prelude.seq` Prelude.rnf fileKeyUpdate
+      `Prelude.seq` Prelude.rnf referenceRoleARNUpdate
+
+instance Data.ToJSON S3ReferenceDataSourceUpdate where
+  toJSON S3ReferenceDataSourceUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BucketARNUpdate" Data..=)
+              Prelude.<$> bucketARNUpdate,
+            ("FileKeyUpdate" Data..=) Prelude.<$> fileKeyUpdate,
+            ("ReferenceRoleARNUpdate" Data..=)
+              Prelude.<$> referenceRoleARNUpdate
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/SourceSchema.hs b/gen/Amazonka/KinesisAnalytics/Types/SourceSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/SourceSchema.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.KinesisAnalytics.Types.SourceSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.SourceSchema where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types.RecordColumn
+import Amazonka.KinesisAnalytics.Types.RecordFormat
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the format of the data in the streaming source, and how each
+-- data element maps to corresponding columns created in the in-application
+-- stream.
+--
+-- /See:/ 'newSourceSchema' smart constructor.
+data SourceSchema = SourceSchema'
+  { -- | Specifies the encoding of the records in the streaming source. For
+    -- example, UTF-8.
+    recordEncoding :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the format of the records on the streaming source.
+    recordFormat :: RecordFormat,
+    -- | A list of @RecordColumn@ objects.
+    recordColumns :: Prelude.NonEmpty RecordColumn
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recordEncoding', 'sourceSchema_recordEncoding' - Specifies the encoding of the records in the streaming source. For
+-- example, UTF-8.
+--
+-- 'recordFormat', 'sourceSchema_recordFormat' - Specifies the format of the records on the streaming source.
+--
+-- 'recordColumns', 'sourceSchema_recordColumns' - A list of @RecordColumn@ objects.
+newSourceSchema ::
+  -- | 'recordFormat'
+  RecordFormat ->
+  -- | 'recordColumns'
+  Prelude.NonEmpty RecordColumn ->
+  SourceSchema
+newSourceSchema pRecordFormat_ pRecordColumns_ =
+  SourceSchema'
+    { recordEncoding = Prelude.Nothing,
+      recordFormat = pRecordFormat_,
+      recordColumns = Lens.coerced Lens.# pRecordColumns_
+    }
+
+-- | Specifies the encoding of the records in the streaming source. For
+-- example, UTF-8.
+sourceSchema_recordEncoding :: Lens.Lens' SourceSchema (Prelude.Maybe Prelude.Text)
+sourceSchema_recordEncoding = Lens.lens (\SourceSchema' {recordEncoding} -> recordEncoding) (\s@SourceSchema' {} a -> s {recordEncoding = a} :: SourceSchema)
+
+-- | Specifies the format of the records on the streaming source.
+sourceSchema_recordFormat :: Lens.Lens' SourceSchema RecordFormat
+sourceSchema_recordFormat = Lens.lens (\SourceSchema' {recordFormat} -> recordFormat) (\s@SourceSchema' {} a -> s {recordFormat = a} :: SourceSchema)
+
+-- | A list of @RecordColumn@ objects.
+sourceSchema_recordColumns :: Lens.Lens' SourceSchema (Prelude.NonEmpty RecordColumn)
+sourceSchema_recordColumns = Lens.lens (\SourceSchema' {recordColumns} -> recordColumns) (\s@SourceSchema' {} a -> s {recordColumns = a} :: SourceSchema) Prelude.. Lens.coerced
+
+instance Data.FromJSON SourceSchema where
+  parseJSON =
+    Data.withObject
+      "SourceSchema"
+      ( \x ->
+          SourceSchema'
+            Prelude.<$> (x Data..:? "RecordEncoding")
+            Prelude.<*> (x Data..: "RecordFormat")
+            Prelude.<*> (x Data..: "RecordColumns")
+      )
+
+instance Prelude.Hashable SourceSchema where
+  hashWithSalt _salt SourceSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` recordEncoding
+      `Prelude.hashWithSalt` recordFormat
+      `Prelude.hashWithSalt` recordColumns
+
+instance Prelude.NFData SourceSchema where
+  rnf SourceSchema' {..} =
+    Prelude.rnf recordEncoding
+      `Prelude.seq` Prelude.rnf recordFormat
+      `Prelude.seq` Prelude.rnf recordColumns
+
+instance Data.ToJSON SourceSchema where
+  toJSON SourceSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RecordEncoding" Data..=)
+              Prelude.<$> recordEncoding,
+            Prelude.Just ("RecordFormat" Data..= recordFormat),
+            Prelude.Just
+              ("RecordColumns" Data..= recordColumns)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/Types/Tag.hs b/gen/Amazonka/KinesisAnalytics/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/Types/Tag.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.KinesisAnalytics.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A key-value pair (the value is optional) that you can define and assign
+-- to AWS resources. If you specify a tag that already exists, the tag
+-- value is replaced with the value that you specify in the request. Note
+-- that the maximum number of application tags includes system tags. The
+-- maximum number of user-defined application tags is 50. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The value of the key-value tag. The value is optional.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | The key of the key-value tag.
+    key :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'value', 'tag_value' - The value of the key-value tag. The value is optional.
+--
+-- 'key', 'tag_key' - The key of the key-value tag.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  Tag
+newTag pKey_ =
+  Tag' {value = Prelude.Nothing, key = pKey_}
+
+-- | The value of the key-value tag. The value is optional.
+tag_value :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+-- | The key of the key-value tag.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "Key")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` key
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf value `Prelude.seq` Prelude.rnf key
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("Key" Data..= key)
+          ]
+      )
diff --git a/gen/Amazonka/KinesisAnalytics/UntagResource.hs b/gen/Amazonka/KinesisAnalytics/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/UntagResource.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.KinesisAnalytics.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 one or more tags from a Kinesis Analytics application. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-tagging.html Using Tagging>.
+module Amazonka.KinesisAnalytics.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+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 ARN of the Kinesis Analytics application from which to remove the
+    -- tags.
+    resourceARN :: Prelude.Text,
+    -- | A list of keys of tags to remove from the specified application.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'untagResource_resourceARN' - The ARN of the Kinesis Analytics application from which to remove the
+-- tags.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of keys of tags to remove from the specified application.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ pTagKeys_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The ARN of the Kinesis Analytics application from which to remove the
+-- tags.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | A list of keys of tags to remove from the specified application.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.UntagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /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/KinesisAnalytics/UpdateApplication.hs b/gen/Amazonka/KinesisAnalytics/UpdateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/UpdateApplication.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.KinesisAnalytics.UpdateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This documentation is for version 1 of the Amazon Kinesis Data Analytics
+-- API, which only supports SQL applications. Version 2 of the API supports
+-- SQL and Java applications. For more information about version 2, see
+-- </kinesisanalytics/latest/apiv2/Welcome.html Amazon Kinesis Data Analytics API V2 Documentation>.
+--
+-- Updates an existing Amazon Kinesis Analytics application. Using this
+-- API, you can update application code, input configuration, and output
+-- configuration.
+--
+-- Note that Amazon Kinesis Analytics updates the
+-- @CurrentApplicationVersionId@ each time you update your application.
+--
+-- This operation requires permission for the
+-- @kinesisanalytics:UpdateApplication@ action.
+module Amazonka.KinesisAnalytics.UpdateApplication
+  ( -- * Creating a Request
+    UpdateApplication (..),
+    newUpdateApplication,
+
+    -- * Request Lenses
+    updateApplication_applicationName,
+    updateApplication_currentApplicationVersionId,
+    updateApplication_applicationUpdate,
+
+    -- * Destructuring the Response
+    UpdateApplicationResponse (..),
+    newUpdateApplicationResponse,
+
+    -- * Response Lenses
+    updateApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateApplication' smart constructor.
+data UpdateApplication = UpdateApplication'
+  { -- | Name of the Amazon Kinesis Analytics application to update.
+    applicationName :: Prelude.Text,
+    -- | The current application version ID. You can use the
+    -- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+    -- operation to get this value.
+    currentApplicationVersionId :: Prelude.Natural,
+    -- | Describes application updates.
+    applicationUpdate :: ApplicationUpdate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationName', 'updateApplication_applicationName' - Name of the Amazon Kinesis Analytics application to update.
+--
+-- 'currentApplicationVersionId', 'updateApplication_currentApplicationVersionId' - The current application version ID. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get this value.
+--
+-- 'applicationUpdate', 'updateApplication_applicationUpdate' - Describes application updates.
+newUpdateApplication ::
+  -- | 'applicationName'
+  Prelude.Text ->
+  -- | 'currentApplicationVersionId'
+  Prelude.Natural ->
+  -- | 'applicationUpdate'
+  ApplicationUpdate ->
+  UpdateApplication
+newUpdateApplication
+  pApplicationName_
+  pCurrentApplicationVersionId_
+  pApplicationUpdate_ =
+    UpdateApplication'
+      { applicationName =
+          pApplicationName_,
+        currentApplicationVersionId =
+          pCurrentApplicationVersionId_,
+        applicationUpdate = pApplicationUpdate_
+      }
+
+-- | Name of the Amazon Kinesis Analytics application to update.
+updateApplication_applicationName :: Lens.Lens' UpdateApplication Prelude.Text
+updateApplication_applicationName = Lens.lens (\UpdateApplication' {applicationName} -> applicationName) (\s@UpdateApplication' {} a -> s {applicationName = a} :: UpdateApplication)
+
+-- | The current application version ID. You can use the
+-- <https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_DescribeApplication.html DescribeApplication>
+-- operation to get this value.
+updateApplication_currentApplicationVersionId :: Lens.Lens' UpdateApplication Prelude.Natural
+updateApplication_currentApplicationVersionId = Lens.lens (\UpdateApplication' {currentApplicationVersionId} -> currentApplicationVersionId) (\s@UpdateApplication' {} a -> s {currentApplicationVersionId = a} :: UpdateApplication)
+
+-- | Describes application updates.
+updateApplication_applicationUpdate :: Lens.Lens' UpdateApplication ApplicationUpdate
+updateApplication_applicationUpdate = Lens.lens (\UpdateApplication' {applicationUpdate} -> applicationUpdate) (\s@UpdateApplication' {} a -> s {applicationUpdate = a} :: UpdateApplication)
+
+instance Core.AWSRequest UpdateApplication where
+  type
+    AWSResponse UpdateApplication =
+      UpdateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateApplication where
+  hashWithSalt _salt UpdateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationName
+      `Prelude.hashWithSalt` currentApplicationVersionId
+      `Prelude.hashWithSalt` applicationUpdate
+
+instance Prelude.NFData UpdateApplication where
+  rnf UpdateApplication' {..} =
+    Prelude.rnf applicationName
+      `Prelude.seq` Prelude.rnf currentApplicationVersionId
+      `Prelude.seq` Prelude.rnf applicationUpdate
+
+instance Data.ToHeaders UpdateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "KinesisAnalytics_20150814.UpdateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateApplication where
+  toJSON UpdateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationName" Data..= applicationName),
+            Prelude.Just
+              ( "CurrentApplicationVersionId"
+                  Data..= currentApplicationVersionId
+              ),
+            Prelude.Just
+              ("ApplicationUpdate" Data..= applicationUpdate)
+          ]
+      )
+
+instance Data.ToPath UpdateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateApplicationResponse' smart constructor.
+data UpdateApplicationResponse = UpdateApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateApplicationResponse_httpStatus' - The response's http status code.
+newUpdateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateApplicationResponse
+newUpdateApplicationResponse pHttpStatus_ =
+  UpdateApplicationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateApplicationResponse_httpStatus :: Lens.Lens' UpdateApplicationResponse Prelude.Int
+updateApplicationResponse_httpStatus = Lens.lens (\UpdateApplicationResponse' {httpStatus} -> httpStatus) (\s@UpdateApplicationResponse' {} a -> s {httpStatus = a} :: UpdateApplicationResponse)
+
+instance Prelude.NFData UpdateApplicationResponse where
+  rnf UpdateApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/KinesisAnalytics/Waiters.hs b/gen/Amazonka/KinesisAnalytics/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/KinesisAnalytics/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.KinesisAnalytics.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.KinesisAnalytics.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.KinesisAnalytics.Lens
+import Amazonka.KinesisAnalytics.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/KinesisAnalytics.hs b/gen/Network/AWS/KinesisAnalytics.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics.hs
+++ /dev/null
@@ -1,532 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Amazon Kinesis Analytics is the easiest way to process streaming data in real time with standard SQL without having to learn new programming languages or processing frameworks. Amazon Kinesis Analytics enables you to create and run SQL queries on streaming data so that you can gain actionable insights and respond to your business and customer needs promptly.
---
---
--- Amazon Kinesis Analytics takes care of everything required to run your queries continuously and scales automatically to match the volume and throughput rate of your incoming data. With Amazon Kinesis Analytics, you only pay for the resources your queries consume. There is no minimum fee or setup cost.
-module Network.AWS.KinesisAnalytics
-    (
-    -- * Service Configuration
-      kinesisAnalytics
-
-    -- * Errors
-    -- $errors
-
-    -- ** InvalidApplicationConfigurationException
-    , _InvalidApplicationConfigurationException
-
-    -- ** ResourceProvisionedThroughputExceededException
-    , _ResourceProvisionedThroughputExceededException
-
-    -- ** InvalidArgumentException
-    , _InvalidArgumentException
-
-    -- ** CodeValidationException
-    , _CodeValidationException
-
-    -- ** ConcurrentModificationException
-    , _ConcurrentModificationException
-
-    -- ** ServiceUnavailableException
-    , _ServiceUnavailableException
-
-    -- ** UnableToDetectSchemaException
-    , _UnableToDetectSchemaException
-
-    -- ** ResourceNotFoundException
-    , _ResourceNotFoundException
-
-    -- ** LimitExceededException
-    , _LimitExceededException
-
-    -- ** ResourceInUseException
-    , _ResourceInUseException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** AddApplicationOutput
-    , module Network.AWS.KinesisAnalytics.AddApplicationOutput
-
-    -- ** DiscoverInputSchema
-    , module Network.AWS.KinesisAnalytics.DiscoverInputSchema
-
-    -- ** DescribeApplication
-    , module Network.AWS.KinesisAnalytics.DescribeApplication
-
-    -- ** StartApplication
-    , module Network.AWS.KinesisAnalytics.StartApplication
-
-    -- ** DeleteApplicationReferenceDataSource
-    , module Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource
-
-    -- ** DeleteApplication
-    , module Network.AWS.KinesisAnalytics.DeleteApplication
-
-    -- ** UpdateApplication
-    , module Network.AWS.KinesisAnalytics.UpdateApplication
-
-    -- ** DeleteApplicationCloudWatchLoggingOption
-    , module Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
-
-    -- ** AddApplicationInputProcessingConfiguration
-    , module Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration
-
-    -- ** CreateApplication
-    , module Network.AWS.KinesisAnalytics.CreateApplication
-
-    -- ** DeleteApplicationOutput
-    , module Network.AWS.KinesisAnalytics.DeleteApplicationOutput
-
-    -- ** StopApplication
-    , module Network.AWS.KinesisAnalytics.StopApplication
-
-    -- ** AddApplicationReferenceDataSource
-    , module Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource
-
-    -- ** AddApplicationInput
-    , module Network.AWS.KinesisAnalytics.AddApplicationInput
-
-    -- ** AddApplicationCloudWatchLoggingOption
-    , module Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
-
-    -- ** ListApplications
-    , module Network.AWS.KinesisAnalytics.ListApplications
-
-    -- ** DeleteApplicationInputProcessingConfiguration
-    , module Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
-
-    -- * Types
-
-    -- ** ApplicationStatus
-    , ApplicationStatus (..)
-
-    -- ** InputStartingPosition
-    , InputStartingPosition (..)
-
-    -- ** RecordFormatType
-    , RecordFormatType (..)
-
-    -- ** ApplicationDetail
-    , ApplicationDetail
-    , applicationDetail
-    , adApplicationDescription
-    , adOutputDescriptions
-    , adCloudWatchLoggingOptionDescriptions
-    , adReferenceDataSourceDescriptions
-    , adInputDescriptions
-    , adApplicationCode
-    , adCreateTimestamp
-    , adLastUpdateTimestamp
-    , adApplicationName
-    , adApplicationARN
-    , adApplicationStatus
-    , adApplicationVersionId
-
-    -- ** ApplicationSummary
-    , ApplicationSummary
-    , applicationSummary
-    , asApplicationName
-    , asApplicationARN
-    , asApplicationStatus
-
-    -- ** ApplicationUpdate
-    , ApplicationUpdate
-    , applicationUpdate
-    , auReferenceDataSourceUpdates
-    , auInputUpdates
-    , auCloudWatchLoggingOptionUpdates
-    , auOutputUpdates
-    , auApplicationCodeUpdate
-
-    -- ** CSVMappingParameters
-    , CSVMappingParameters
-    , csvMappingParameters
-    , cmpRecordRowDelimiter
-    , cmpRecordColumnDelimiter
-
-    -- ** CloudWatchLoggingOption
-    , CloudWatchLoggingOption
-    , cloudWatchLoggingOption
-    , cwloLogStreamARN
-    , cwloRoleARN
-
-    -- ** CloudWatchLoggingOptionDescription
-    , CloudWatchLoggingOptionDescription
-    , cloudWatchLoggingOptionDescription
-    , cwlodCloudWatchLoggingOptionId
-    , cwlodLogStreamARN
-    , cwlodRoleARN
-
-    -- ** CloudWatchLoggingOptionUpdate
-    , CloudWatchLoggingOptionUpdate
-    , cloudWatchLoggingOptionUpdate
-    , cwlouRoleARNUpdate
-    , cwlouLogStreamARNUpdate
-    , cwlouCloudWatchLoggingOptionId
-
-    -- ** DestinationSchema
-    , DestinationSchema
-    , destinationSchema
-    , dsRecordFormatType
-
-    -- ** Input
-    , Input
-    , input
-    , iInputParallelism
-    , iInputProcessingConfiguration
-    , iKinesisStreamsInput
-    , iKinesisFirehoseInput
-    , iNamePrefix
-    , iInputSchema
-
-    -- ** InputConfiguration
-    , InputConfiguration
-    , inputConfiguration
-    , icId
-    , icInputStartingPositionConfiguration
-
-    -- ** InputDescription
-    , InputDescription
-    , inputDescription
-    , idInputStartingPositionConfiguration
-    , idInputParallelism
-    , idInputId
-    , idInAppStreamNames
-    , idKinesisFirehoseInputDescription
-    , idInputSchema
-    , idKinesisStreamsInputDescription
-    , idNamePrefix
-    , idInputProcessingConfigurationDescription
-
-    -- ** InputLambdaProcessor
-    , InputLambdaProcessor
-    , inputLambdaProcessor
-    , ilpResourceARN
-    , ilpRoleARN
-
-    -- ** InputLambdaProcessorDescription
-    , InputLambdaProcessorDescription
-    , inputLambdaProcessorDescription
-    , ilpdResourceARN
-    , ilpdRoleARN
-
-    -- ** InputLambdaProcessorUpdate
-    , InputLambdaProcessorUpdate
-    , inputLambdaProcessorUpdate
-    , ilpuRoleARNUpdate
-    , ilpuResourceARNUpdate
-
-    -- ** InputParallelism
-    , InputParallelism
-    , inputParallelism
-    , ipCount
-
-    -- ** InputParallelismUpdate
-    , InputParallelismUpdate
-    , inputParallelismUpdate
-    , ipuCountUpdate
-
-    -- ** InputProcessingConfiguration
-    , InputProcessingConfiguration
-    , inputProcessingConfiguration
-    , ipcInputLambdaProcessor
-
-    -- ** InputProcessingConfigurationDescription
-    , InputProcessingConfigurationDescription
-    , inputProcessingConfigurationDescription
-    , ipcdInputLambdaProcessorDescription
-
-    -- ** InputProcessingConfigurationUpdate
-    , InputProcessingConfigurationUpdate
-    , inputProcessingConfigurationUpdate
-    , ipcuInputLambdaProcessorUpdate
-
-    -- ** InputSchemaUpdate
-    , InputSchemaUpdate
-    , inputSchemaUpdate
-    , isuRecordFormatUpdate
-    , isuRecordEncodingUpdate
-    , isuRecordColumnUpdates
-
-    -- ** InputStartingPositionConfiguration
-    , InputStartingPositionConfiguration
-    , inputStartingPositionConfiguration
-    , ispcInputStartingPosition
-
-    -- ** InputUpdate
-    , InputUpdate
-    , inputUpdate
-    , iuInputProcessingConfigurationUpdate
-    , iuKinesisStreamsInputUpdate
-    , iuInputParallelismUpdate
-    , iuNamePrefixUpdate
-    , iuInputSchemaUpdate
-    , iuKinesisFirehoseInputUpdate
-    , iuInputId
-
-    -- ** JSONMappingParameters
-    , JSONMappingParameters
-    , jsonMappingParameters
-    , jmpRecordRowPath
-
-    -- ** KinesisFirehoseInput
-    , KinesisFirehoseInput
-    , kinesisFirehoseInput
-    , kfiResourceARN
-    , kfiRoleARN
-
-    -- ** KinesisFirehoseInputDescription
-    , KinesisFirehoseInputDescription
-    , kinesisFirehoseInputDescription
-    , kfidResourceARN
-    , kfidRoleARN
-
-    -- ** KinesisFirehoseInputUpdate
-    , KinesisFirehoseInputUpdate
-    , kinesisFirehoseInputUpdate
-    , kfiuRoleARNUpdate
-    , kfiuResourceARNUpdate
-
-    -- ** KinesisFirehoseOutput
-    , KinesisFirehoseOutput
-    , kinesisFirehoseOutput
-    , kfoResourceARN
-    , kfoRoleARN
-
-    -- ** KinesisFirehoseOutputDescription
-    , KinesisFirehoseOutputDescription
-    , kinesisFirehoseOutputDescription
-    , kfodResourceARN
-    , kfodRoleARN
-
-    -- ** KinesisFirehoseOutputUpdate
-    , KinesisFirehoseOutputUpdate
-    , kinesisFirehoseOutputUpdate
-    , kfouRoleARNUpdate
-    , kfouResourceARNUpdate
-
-    -- ** KinesisStreamsInput
-    , KinesisStreamsInput
-    , kinesisStreamsInput
-    , ksiResourceARN
-    , ksiRoleARN
-
-    -- ** KinesisStreamsInputDescription
-    , KinesisStreamsInputDescription
-    , kinesisStreamsInputDescription
-    , ksidResourceARN
-    , ksidRoleARN
-
-    -- ** KinesisStreamsInputUpdate
-    , KinesisStreamsInputUpdate
-    , kinesisStreamsInputUpdate
-    , ksiuRoleARNUpdate
-    , ksiuResourceARNUpdate
-
-    -- ** KinesisStreamsOutput
-    , KinesisStreamsOutput
-    , kinesisStreamsOutput
-    , ksoResourceARN
-    , ksoRoleARN
-
-    -- ** KinesisStreamsOutputDescription
-    , KinesisStreamsOutputDescription
-    , kinesisStreamsOutputDescription
-    , ksodResourceARN
-    , ksodRoleARN
-
-    -- ** KinesisStreamsOutputUpdate
-    , KinesisStreamsOutputUpdate
-    , kinesisStreamsOutputUpdate
-    , ksouRoleARNUpdate
-    , ksouResourceARNUpdate
-
-    -- ** LambdaOutput
-    , LambdaOutput
-    , lambdaOutput
-    , loResourceARN
-    , loRoleARN
-
-    -- ** LambdaOutputDescription
-    , LambdaOutputDescription
-    , lambdaOutputDescription
-    , lodResourceARN
-    , lodRoleARN
-
-    -- ** LambdaOutputUpdate
-    , LambdaOutputUpdate
-    , lambdaOutputUpdate
-    , louRoleARNUpdate
-    , louResourceARNUpdate
-
-    -- ** MappingParameters
-    , MappingParameters
-    , mappingParameters
-    , mpCSVMappingParameters
-    , mpJSONMappingParameters
-
-    -- ** Output
-    , Output
-    , output
-    , oLambdaOutput
-    , oKinesisStreamsOutput
-    , oKinesisFirehoseOutput
-    , oName
-    , oDestinationSchema
-
-    -- ** OutputDescription
-    , OutputDescription
-    , outputDescription
-    , odOutputId
-    , odDestinationSchema
-    , odKinesisFirehoseOutputDescription
-    , odKinesisStreamsOutputDescription
-    , odName
-    , odLambdaOutputDescription
-
-    -- ** OutputUpdate
-    , OutputUpdate
-    , outputUpdate
-    , ouKinesisStreamsOutputUpdate
-    , ouDestinationSchemaUpdate
-    , ouKinesisFirehoseOutputUpdate
-    , ouNameUpdate
-    , ouLambdaOutputUpdate
-    , ouOutputId
-
-    -- ** RecordColumn
-    , RecordColumn
-    , recordColumn
-    , rcMapping
-    , rcName
-    , rcSqlType
-
-    -- ** RecordFormat
-    , RecordFormat
-    , recordFormat
-    , rfMappingParameters
-    , rfRecordFormatType
-
-    -- ** ReferenceDataSource
-    , ReferenceDataSource
-    , referenceDataSource
-    , rdsS3ReferenceDataSource
-    , rdsTableName
-    , rdsReferenceSchema
-
-    -- ** ReferenceDataSourceDescription
-    , ReferenceDataSourceDescription
-    , referenceDataSourceDescription
-    , rdsdReferenceSchema
-    , rdsdReferenceId
-    , rdsdTableName
-    , rdsdS3ReferenceDataSourceDescription
-
-    -- ** ReferenceDataSourceUpdate
-    , ReferenceDataSourceUpdate
-    , referenceDataSourceUpdate
-    , rdsuTableNameUpdate
-    , rdsuS3ReferenceDataSourceUpdate
-    , rdsuReferenceSchemaUpdate
-    , rdsuReferenceId
-
-    -- ** S3Configuration
-    , S3Configuration
-    , s3Configuration
-    , scRoleARN
-    , scBucketARN
-    , scFileKey
-
-    -- ** S3ReferenceDataSource
-    , S3ReferenceDataSource
-    , s3ReferenceDataSource
-    , srdsBucketARN
-    , srdsFileKey
-    , srdsReferenceRoleARN
-
-    -- ** S3ReferenceDataSourceDescription
-    , S3ReferenceDataSourceDescription
-    , s3ReferenceDataSourceDescription
-    , srdsdBucketARN
-    , srdsdFileKey
-    , srdsdReferenceRoleARN
-
-    -- ** S3ReferenceDataSourceUpdate
-    , S3ReferenceDataSourceUpdate
-    , s3ReferenceDataSourceUpdate
-    , srdsuBucketARNUpdate
-    , srdsuFileKeyUpdate
-    , srdsuReferenceRoleARNUpdate
-
-    -- ** SourceSchema
-    , SourceSchema
-    , sourceSchema
-    , ssRecordEncoding
-    , ssRecordFormat
-    , ssRecordColumns
-    ) where
-
-import Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
-import Network.AWS.KinesisAnalytics.AddApplicationInput
-import Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration
-import Network.AWS.KinesisAnalytics.AddApplicationOutput
-import Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource
-import Network.AWS.KinesisAnalytics.CreateApplication
-import Network.AWS.KinesisAnalytics.DeleteApplication
-import Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
-import Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
-import Network.AWS.KinesisAnalytics.DeleteApplicationOutput
-import Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource
-import Network.AWS.KinesisAnalytics.DescribeApplication
-import Network.AWS.KinesisAnalytics.DiscoverInputSchema
-import Network.AWS.KinesisAnalytics.ListApplications
-import Network.AWS.KinesisAnalytics.StartApplication
-import Network.AWS.KinesisAnalytics.StopApplication
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.UpdateApplication
-import Network.AWS.KinesisAnalytics.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 'KinesisAnalytics'.
--}
-
-{- $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/Network/AWS/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs b/gen/Network/AWS/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/AddApplicationCloudWatchLoggingOption.hs
+++ /dev/null
@@ -1,168 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a CloudWatch log stream to monitor application configuration errors. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
---
---
-module Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption
-    (
-    -- * Creating a Request
-      addApplicationCloudWatchLoggingOption
-    , AddApplicationCloudWatchLoggingOption
-    -- * Request Lenses
-    , aacwloApplicationName
-    , aacwloCurrentApplicationVersionId
-    , aacwloCloudWatchLoggingOption
-
-    -- * Destructuring the Response
-    , addApplicationCloudWatchLoggingOptionResponse
-    , AddApplicationCloudWatchLoggingOptionResponse
-    -- * Response Lenses
-    , aacwlorsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'addApplicationCloudWatchLoggingOption' smart constructor.
-data AddApplicationCloudWatchLoggingOption = AddApplicationCloudWatchLoggingOption'
-  { _aacwloApplicationName             :: !Text
-  , _aacwloCurrentApplicationVersionId :: !Nat
-  , _aacwloCloudWatchLoggingOption     :: !CloudWatchLoggingOption
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationCloudWatchLoggingOption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aacwloApplicationName' - The Kinesis Analytics application name.
---
--- * 'aacwloCurrentApplicationVersionId' - The version ID of the Kinesis Analytics application.
---
--- * 'aacwloCloudWatchLoggingOption' - Provides the CloudWatch log stream Amazon Resource Name (ARN) and the IAM role ARN. Note: To write application messages to CloudWatch, the IAM role that is used must have the @PutLogEvents@ policy action enabled.
-addApplicationCloudWatchLoggingOption
-    :: Text -- ^ 'aacwloApplicationName'
-    -> Natural -- ^ 'aacwloCurrentApplicationVersionId'
-    -> CloudWatchLoggingOption -- ^ 'aacwloCloudWatchLoggingOption'
-    -> AddApplicationCloudWatchLoggingOption
-addApplicationCloudWatchLoggingOption pApplicationName_ pCurrentApplicationVersionId_ pCloudWatchLoggingOption_ =
-  AddApplicationCloudWatchLoggingOption'
-    { _aacwloApplicationName = pApplicationName_
-    , _aacwloCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _aacwloCloudWatchLoggingOption = pCloudWatchLoggingOption_
-    }
-
-
--- | The Kinesis Analytics application name.
-aacwloApplicationName :: Lens' AddApplicationCloudWatchLoggingOption Text
-aacwloApplicationName = lens _aacwloApplicationName (\ s a -> s{_aacwloApplicationName = a})
-
--- | The version ID of the Kinesis Analytics application.
-aacwloCurrentApplicationVersionId :: Lens' AddApplicationCloudWatchLoggingOption Natural
-aacwloCurrentApplicationVersionId = lens _aacwloCurrentApplicationVersionId (\ s a -> s{_aacwloCurrentApplicationVersionId = a}) . _Nat
-
--- | Provides the CloudWatch log stream Amazon Resource Name (ARN) and the IAM role ARN. Note: To write application messages to CloudWatch, the IAM role that is used must have the @PutLogEvents@ policy action enabled.
-aacwloCloudWatchLoggingOption :: Lens' AddApplicationCloudWatchLoggingOption CloudWatchLoggingOption
-aacwloCloudWatchLoggingOption = lens _aacwloCloudWatchLoggingOption (\ s a -> s{_aacwloCloudWatchLoggingOption = a})
-
-instance AWSRequest
-           AddApplicationCloudWatchLoggingOption
-         where
-        type Rs AddApplicationCloudWatchLoggingOption =
-             AddApplicationCloudWatchLoggingOptionResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AddApplicationCloudWatchLoggingOptionResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           AddApplicationCloudWatchLoggingOption
-         where
-
-instance NFData AddApplicationCloudWatchLoggingOption
-         where
-
-instance ToHeaders
-           AddApplicationCloudWatchLoggingOption
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.AddApplicationCloudWatchLoggingOption"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AddApplicationCloudWatchLoggingOption
-         where
-        toJSON AddApplicationCloudWatchLoggingOption'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _aacwloApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _aacwloCurrentApplicationVersionId),
-                  Just
-                    ("CloudWatchLoggingOption" .=
-                       _aacwloCloudWatchLoggingOption)])
-
-instance ToPath AddApplicationCloudWatchLoggingOption
-         where
-        toPath = const "/"
-
-instance ToQuery
-           AddApplicationCloudWatchLoggingOption
-         where
-        toQuery = const mempty
-
--- | /See:/ 'addApplicationCloudWatchLoggingOptionResponse' smart constructor.
-newtype AddApplicationCloudWatchLoggingOptionResponse = AddApplicationCloudWatchLoggingOptionResponse'
-  { _aacwlorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationCloudWatchLoggingOptionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aacwlorsResponseStatus' - -- | The response status code.
-addApplicationCloudWatchLoggingOptionResponse
-    :: Int -- ^ 'aacwlorsResponseStatus'
-    -> AddApplicationCloudWatchLoggingOptionResponse
-addApplicationCloudWatchLoggingOptionResponse pResponseStatus_ =
-  AddApplicationCloudWatchLoggingOptionResponse'
-    {_aacwlorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-aacwlorsResponseStatus :: Lens' AddApplicationCloudWatchLoggingOptionResponse Int
-aacwlorsResponseStatus = lens _aacwlorsResponseStatus (\ s a -> s{_aacwlorsResponseStatus = a})
-
-instance NFData
-           AddApplicationCloudWatchLoggingOptionResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/AddApplicationInput.hs b/gen/Network/AWS/KinesisAnalytics/AddApplicationInput.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/AddApplicationInput.hs
+++ /dev/null
@@ -1,165 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.AddApplicationInput
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a streaming source to your Amazon Kinesis application. For conceptual information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
---
--- You can add a streaming source either when you create an application or you can use this operation to add a streaming source after you create an application. For more information, see 'CreateApplication' .
---
--- Any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the 'DescribeApplication' operation to find the current application version.
---
--- This operation requires permissions to perform the @kinesisanalytics:AddApplicationInput@ action.
---
-module Network.AWS.KinesisAnalytics.AddApplicationInput
-    (
-    -- * Creating a Request
-      addApplicationInput
-    , AddApplicationInput
-    -- * Request Lenses
-    , aaiApplicationName
-    , aaiCurrentApplicationVersionId
-    , aaiInput
-
-    -- * Destructuring the Response
-    , addApplicationInputResponse
-    , AddApplicationInputResponse
-    -- * Response Lenses
-    , aairsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'addApplicationInput' smart constructor.
-data AddApplicationInput = AddApplicationInput'
-  { _aaiApplicationName             :: !Text
-  , _aaiCurrentApplicationVersionId :: !Nat
-  , _aaiInput                       :: !Input
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationInput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaiApplicationName' - Name of your existing Amazon Kinesis Analytics application to which you want to add the streaming source.
---
--- * 'aaiCurrentApplicationVersionId' - Current version of your Amazon Kinesis Analytics application. You can use the 'DescribeApplication' operation to find the current application version.
---
--- * 'aaiInput' - The 'Input' to add.
-addApplicationInput
-    :: Text -- ^ 'aaiApplicationName'
-    -> Natural -- ^ 'aaiCurrentApplicationVersionId'
-    -> Input -- ^ 'aaiInput'
-    -> AddApplicationInput
-addApplicationInput pApplicationName_ pCurrentApplicationVersionId_ pInput_ =
-  AddApplicationInput'
-    { _aaiApplicationName = pApplicationName_
-    , _aaiCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _aaiInput = pInput_
-    }
-
-
--- | Name of your existing Amazon Kinesis Analytics application to which you want to add the streaming source.
-aaiApplicationName :: Lens' AddApplicationInput Text
-aaiApplicationName = lens _aaiApplicationName (\ s a -> s{_aaiApplicationName = a})
-
--- | Current version of your Amazon Kinesis Analytics application. You can use the 'DescribeApplication' operation to find the current application version.
-aaiCurrentApplicationVersionId :: Lens' AddApplicationInput Natural
-aaiCurrentApplicationVersionId = lens _aaiCurrentApplicationVersionId (\ s a -> s{_aaiCurrentApplicationVersionId = a}) . _Nat
-
--- | The 'Input' to add.
-aaiInput :: Lens' AddApplicationInput Input
-aaiInput = lens _aaiInput (\ s a -> s{_aaiInput = a})
-
-instance AWSRequest AddApplicationInput where
-        type Rs AddApplicationInput =
-             AddApplicationInputResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AddApplicationInputResponse' <$> (pure (fromEnum s)))
-
-instance Hashable AddApplicationInput where
-
-instance NFData AddApplicationInput where
-
-instance ToHeaders AddApplicationInput where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.AddApplicationInput" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AddApplicationInput where
-        toJSON AddApplicationInput'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _aaiApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _aaiCurrentApplicationVersionId),
-                  Just ("Input" .= _aaiInput)])
-
-instance ToPath AddApplicationInput where
-        toPath = const "/"
-
-instance ToQuery AddApplicationInput where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'addApplicationInputResponse' smart constructor.
-newtype AddApplicationInputResponse = AddApplicationInputResponse'
-  { _aairsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationInputResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aairsResponseStatus' - -- | The response status code.
-addApplicationInputResponse
-    :: Int -- ^ 'aairsResponseStatus'
-    -> AddApplicationInputResponse
-addApplicationInputResponse pResponseStatus_ =
-  AddApplicationInputResponse' {_aairsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-aairsResponseStatus :: Lens' AddApplicationInputResponse Int
-aairsResponseStatus = lens _aairsResponseStatus (\ s a -> s{_aairsResponseStatus = a})
-
-instance NFData AddApplicationInputResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs b/gen/Network/AWS/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/AddApplicationInputProcessingConfiguration.hs
+++ /dev/null
@@ -1,183 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds an 'InputProcessingConfiguration' to an application. An input processor preprocesses records on the input stream before the application's SQL code executes. Currently, the only input processor available is <https://aws.amazon.com/documentation/lambda/ AWS Lambda> .
---
---
-module Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration
-    (
-    -- * Creating a Request
-      addApplicationInputProcessingConfiguration
-    , AddApplicationInputProcessingConfiguration
-    -- * Request Lenses
-    , aaipcApplicationName
-    , aaipcCurrentApplicationVersionId
-    , aaipcInputId
-    , aaipcInputProcessingConfiguration
-
-    -- * Destructuring the Response
-    , addApplicationInputProcessingConfigurationResponse
-    , AddApplicationInputProcessingConfigurationResponse
-    -- * Response Lenses
-    , aaipcrsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'addApplicationInputProcessingConfiguration' smart constructor.
-data AddApplicationInputProcessingConfiguration = AddApplicationInputProcessingConfiguration'
-  { _aaipcApplicationName              :: !Text
-  , _aaipcCurrentApplicationVersionId  :: !Nat
-  , _aaipcInputId                      :: !Text
-  , _aaipcInputProcessingConfiguration :: !InputProcessingConfiguration
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationInputProcessingConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaipcApplicationName' - Name of the application to which you want to add the input processing configuration.
---
--- * 'aaipcCurrentApplicationVersionId' - Version of the application to which you want to add the input processing configuration. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
---
--- * 'aaipcInputId' - The ID of the input configuration to add the input processing configuration to. You can get a list of the input IDs for an application using the 'DescribeApplication' operation.
---
--- * 'aaipcInputProcessingConfiguration' - The 'InputProcessingConfiguration' to add to the application.
-addApplicationInputProcessingConfiguration
-    :: Text -- ^ 'aaipcApplicationName'
-    -> Natural -- ^ 'aaipcCurrentApplicationVersionId'
-    -> Text -- ^ 'aaipcInputId'
-    -> InputProcessingConfiguration -- ^ 'aaipcInputProcessingConfiguration'
-    -> AddApplicationInputProcessingConfiguration
-addApplicationInputProcessingConfiguration pApplicationName_ pCurrentApplicationVersionId_ pInputId_ pInputProcessingConfiguration_ =
-  AddApplicationInputProcessingConfiguration'
-    { _aaipcApplicationName = pApplicationName_
-    , _aaipcCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _aaipcInputId = pInputId_
-    , _aaipcInputProcessingConfiguration = pInputProcessingConfiguration_
-    }
-
-
--- | Name of the application to which you want to add the input processing configuration.
-aaipcApplicationName :: Lens' AddApplicationInputProcessingConfiguration Text
-aaipcApplicationName = lens _aaipcApplicationName (\ s a -> s{_aaipcApplicationName = a})
-
--- | Version of the application to which you want to add the input processing configuration. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
-aaipcCurrentApplicationVersionId :: Lens' AddApplicationInputProcessingConfiguration Natural
-aaipcCurrentApplicationVersionId = lens _aaipcCurrentApplicationVersionId (\ s a -> s{_aaipcCurrentApplicationVersionId = a}) . _Nat
-
--- | The ID of the input configuration to add the input processing configuration to. You can get a list of the input IDs for an application using the 'DescribeApplication' operation.
-aaipcInputId :: Lens' AddApplicationInputProcessingConfiguration Text
-aaipcInputId = lens _aaipcInputId (\ s a -> s{_aaipcInputId = a})
-
--- | The 'InputProcessingConfiguration' to add to the application.
-aaipcInputProcessingConfiguration :: Lens' AddApplicationInputProcessingConfiguration InputProcessingConfiguration
-aaipcInputProcessingConfiguration = lens _aaipcInputProcessingConfiguration (\ s a -> s{_aaipcInputProcessingConfiguration = a})
-
-instance AWSRequest
-           AddApplicationInputProcessingConfiguration
-         where
-        type Rs AddApplicationInputProcessingConfiguration =
-             AddApplicationInputProcessingConfigurationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AddApplicationInputProcessingConfigurationResponse'
-                   <$> (pure (fromEnum s)))
-
-instance Hashable
-           AddApplicationInputProcessingConfiguration
-         where
-
-instance NFData
-           AddApplicationInputProcessingConfiguration
-         where
-
-instance ToHeaders
-           AddApplicationInputProcessingConfiguration
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.AddApplicationInputProcessingConfiguration"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           AddApplicationInputProcessingConfiguration
-         where
-        toJSON
-          AddApplicationInputProcessingConfiguration'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _aaipcApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _aaipcCurrentApplicationVersionId),
-                  Just ("InputId" .= _aaipcInputId),
-                  Just
-                    ("InputProcessingConfiguration" .=
-                       _aaipcInputProcessingConfiguration)])
-
-instance ToPath
-           AddApplicationInputProcessingConfiguration
-         where
-        toPath = const "/"
-
-instance ToQuery
-           AddApplicationInputProcessingConfiguration
-         where
-        toQuery = const mempty
-
--- | /See:/ 'addApplicationInputProcessingConfigurationResponse' smart constructor.
-newtype AddApplicationInputProcessingConfigurationResponse = AddApplicationInputProcessingConfigurationResponse'
-  { _aaipcrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationInputProcessingConfigurationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaipcrsResponseStatus' - -- | The response status code.
-addApplicationInputProcessingConfigurationResponse
-    :: Int -- ^ 'aaipcrsResponseStatus'
-    -> AddApplicationInputProcessingConfigurationResponse
-addApplicationInputProcessingConfigurationResponse pResponseStatus_ =
-  AddApplicationInputProcessingConfigurationResponse'
-    {_aaipcrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-aaipcrsResponseStatus :: Lens' AddApplicationInputProcessingConfigurationResponse Int
-aaipcrsResponseStatus = lens _aaipcrsResponseStatus (\ s a -> s{_aaipcrsResponseStatus = a})
-
-instance NFData
-           AddApplicationInputProcessingConfigurationResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/AddApplicationOutput.hs b/gen/Network/AWS/KinesisAnalytics/AddApplicationOutput.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/AddApplicationOutput.hs
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.AddApplicationOutput
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds an external destination to your Amazon Kinesis Analytics application.
---
---
--- If you want Amazon Kinesis Analytics to deliver data from an in-application stream within your application to an external destination (such as an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery stream, or an Amazon Lambda function), you add the relevant configuration to your application using this operation. You can configure one or more outputs for your application. Each output configuration maps an in-application stream and an external destination.
---
--- You can use one of the output configurations to deliver data from your in-application error stream to an external destination so that you can analyze the errors. For conceptual information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Understanding Application Output (Destination)> .
---
--- Note that any configuration update, including adding a streaming source using this operation, results in a new version of the application. You can use the 'DescribeApplication' operation to find the current application version.
---
--- For the limits on the number of application inputs and outputs you can configure, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits> .
---
--- This operation requires permissions to perform the @kinesisanalytics:AddApplicationOutput@ action.
---
-module Network.AWS.KinesisAnalytics.AddApplicationOutput
-    (
-    -- * Creating a Request
-      addApplicationOutput
-    , AddApplicationOutput
-    -- * Request Lenses
-    , aaoApplicationName
-    , aaoCurrentApplicationVersionId
-    , aaoOutput
-
-    -- * Destructuring the Response
-    , addApplicationOutputResponse
-    , AddApplicationOutputResponse
-    -- * Response Lenses
-    , aaorsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'addApplicationOutput' smart constructor.
-data AddApplicationOutput = AddApplicationOutput'
-  { _aaoApplicationName             :: !Text
-  , _aaoCurrentApplicationVersionId :: !Nat
-  , _aaoOutput                      :: !Output
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaoApplicationName' - Name of the application to which you want to add the output configuration.
---
--- * 'aaoCurrentApplicationVersionId' - Version of the application to which you want to add the output configuration. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
---
--- * 'aaoOutput' - An array of objects, each describing one output configuration. In the output configuration, you specify the name of an in-application stream, a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery stream, or an Amazon Lambda function), and record the formation to use when writing to the destination.
-addApplicationOutput
-    :: Text -- ^ 'aaoApplicationName'
-    -> Natural -- ^ 'aaoCurrentApplicationVersionId'
-    -> Output -- ^ 'aaoOutput'
-    -> AddApplicationOutput
-addApplicationOutput pApplicationName_ pCurrentApplicationVersionId_ pOutput_ =
-  AddApplicationOutput'
-    { _aaoApplicationName = pApplicationName_
-    , _aaoCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _aaoOutput = pOutput_
-    }
-
-
--- | Name of the application to which you want to add the output configuration.
-aaoApplicationName :: Lens' AddApplicationOutput Text
-aaoApplicationName = lens _aaoApplicationName (\ s a -> s{_aaoApplicationName = a})
-
--- | Version of the application to which you want to add the output configuration. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
-aaoCurrentApplicationVersionId :: Lens' AddApplicationOutput Natural
-aaoCurrentApplicationVersionId = lens _aaoCurrentApplicationVersionId (\ s a -> s{_aaoCurrentApplicationVersionId = a}) . _Nat
-
--- | An array of objects, each describing one output configuration. In the output configuration, you specify the name of an in-application stream, a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery stream, or an Amazon Lambda function), and record the formation to use when writing to the destination.
-aaoOutput :: Lens' AddApplicationOutput Output
-aaoOutput = lens _aaoOutput (\ s a -> s{_aaoOutput = a})
-
-instance AWSRequest AddApplicationOutput where
-        type Rs AddApplicationOutput =
-             AddApplicationOutputResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AddApplicationOutputResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable AddApplicationOutput where
-
-instance NFData AddApplicationOutput where
-
-instance ToHeaders AddApplicationOutput where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.AddApplicationOutput" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AddApplicationOutput where
-        toJSON AddApplicationOutput'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _aaoApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _aaoCurrentApplicationVersionId),
-                  Just ("Output" .= _aaoOutput)])
-
-instance ToPath AddApplicationOutput where
-        toPath = const "/"
-
-instance ToQuery AddApplicationOutput where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'addApplicationOutputResponse' smart constructor.
-newtype AddApplicationOutputResponse = AddApplicationOutputResponse'
-  { _aaorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationOutputResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaorsResponseStatus' - -- | The response status code.
-addApplicationOutputResponse
-    :: Int -- ^ 'aaorsResponseStatus'
-    -> AddApplicationOutputResponse
-addApplicationOutputResponse pResponseStatus_ =
-  AddApplicationOutputResponse' {_aaorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-aaorsResponseStatus :: Lens' AddApplicationOutputResponse Int
-aaorsResponseStatus = lens _aaorsResponseStatus (\ s a -> s{_aaorsResponseStatus = a})
-
-instance NFData AddApplicationOutputResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/AddApplicationReferenceDataSource.hs b/gen/Network/AWS/KinesisAnalytics/AddApplicationReferenceDataSource.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/AddApplicationReferenceDataSource.hs
+++ /dev/null
@@ -1,178 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a reference data source to an existing application.
---
---
--- Amazon Kinesis Analytics reads reference data (that is, an Amazon S3 object) and creates an in-application table within your application. In the request, you provide the source (S3 bucket name and object key name), name of the in-application table to create, and the necessary mapping information that describes how data in Amazon S3 object maps to columns in the resulting in-application table.
---
--- For conceptual information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> . For the limits on data sources you can add to your application, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits> .
---
--- This operation requires permissions to perform the @kinesisanalytics:AddApplicationOutput@ action.
---
-module Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource
-    (
-    -- * Creating a Request
-      addApplicationReferenceDataSource
-    , AddApplicationReferenceDataSource
-    -- * Request Lenses
-    , aardsApplicationName
-    , aardsCurrentApplicationVersionId
-    , aardsReferenceDataSource
-
-    -- * Destructuring the Response
-    , addApplicationReferenceDataSourceResponse
-    , AddApplicationReferenceDataSourceResponse
-    -- * Response Lenses
-    , aardsrsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'addApplicationReferenceDataSource' smart constructor.
-data AddApplicationReferenceDataSource = AddApplicationReferenceDataSource'
-  { _aardsApplicationName             :: !Text
-  , _aardsCurrentApplicationVersionId :: !Nat
-  , _aardsReferenceDataSource         :: !ReferenceDataSource
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationReferenceDataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aardsApplicationName' - Name of an existing application.
---
--- * 'aardsCurrentApplicationVersionId' - Version of the application for which you are adding the reference data source. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
---
--- * 'aardsReferenceDataSource' - The reference data source can be an object in your Amazon S3 bucket. Amazon Kinesis Analytics reads the object and copies the data into the in-application table that is created. You provide an S3 bucket, object key name, and the resulting in-application table that is created. You must also provide an IAM role with the necessary permissions that Amazon Kinesis Analytics can assume to read the object from your S3 bucket on your behalf.
-addApplicationReferenceDataSource
-    :: Text -- ^ 'aardsApplicationName'
-    -> Natural -- ^ 'aardsCurrentApplicationVersionId'
-    -> ReferenceDataSource -- ^ 'aardsReferenceDataSource'
-    -> AddApplicationReferenceDataSource
-addApplicationReferenceDataSource pApplicationName_ pCurrentApplicationVersionId_ pReferenceDataSource_ =
-  AddApplicationReferenceDataSource'
-    { _aardsApplicationName = pApplicationName_
-    , _aardsCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _aardsReferenceDataSource = pReferenceDataSource_
-    }
-
-
--- | Name of an existing application.
-aardsApplicationName :: Lens' AddApplicationReferenceDataSource Text
-aardsApplicationName = lens _aardsApplicationName (\ s a -> s{_aardsApplicationName = a})
-
--- | Version of the application for which you are adding the reference data source. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
-aardsCurrentApplicationVersionId :: Lens' AddApplicationReferenceDataSource Natural
-aardsCurrentApplicationVersionId = lens _aardsCurrentApplicationVersionId (\ s a -> s{_aardsCurrentApplicationVersionId = a}) . _Nat
-
--- | The reference data source can be an object in your Amazon S3 bucket. Amazon Kinesis Analytics reads the object and copies the data into the in-application table that is created. You provide an S3 bucket, object key name, and the resulting in-application table that is created. You must also provide an IAM role with the necessary permissions that Amazon Kinesis Analytics can assume to read the object from your S3 bucket on your behalf.
-aardsReferenceDataSource :: Lens' AddApplicationReferenceDataSource ReferenceDataSource
-aardsReferenceDataSource = lens _aardsReferenceDataSource (\ s a -> s{_aardsReferenceDataSource = a})
-
-instance AWSRequest AddApplicationReferenceDataSource
-         where
-        type Rs AddApplicationReferenceDataSource =
-             AddApplicationReferenceDataSourceResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AddApplicationReferenceDataSourceResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable AddApplicationReferenceDataSource
-         where
-
-instance NFData AddApplicationReferenceDataSource
-         where
-
-instance ToHeaders AddApplicationReferenceDataSource
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.AddApplicationReferenceDataSource"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AddApplicationReferenceDataSource
-         where
-        toJSON AddApplicationReferenceDataSource'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _aardsApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _aardsCurrentApplicationVersionId),
-                  Just
-                    ("ReferenceDataSource" .=
-                       _aardsReferenceDataSource)])
-
-instance ToPath AddApplicationReferenceDataSource
-         where
-        toPath = const "/"
-
-instance ToQuery AddApplicationReferenceDataSource
-         where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'addApplicationReferenceDataSourceResponse' smart constructor.
-newtype AddApplicationReferenceDataSourceResponse = AddApplicationReferenceDataSourceResponse'
-  { _aardsrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddApplicationReferenceDataSourceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aardsrsResponseStatus' - -- | The response status code.
-addApplicationReferenceDataSourceResponse
-    :: Int -- ^ 'aardsrsResponseStatus'
-    -> AddApplicationReferenceDataSourceResponse
-addApplicationReferenceDataSourceResponse pResponseStatus_ =
-  AddApplicationReferenceDataSourceResponse'
-    {_aardsrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-aardsrsResponseStatus :: Lens' AddApplicationReferenceDataSourceResponse Int
-aardsrsResponseStatus = lens _aardsrsResponseStatus (\ s a -> s{_aardsrsResponseStatus = a})
-
-instance NFData
-           AddApplicationReferenceDataSourceResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/CreateApplication.hs b/gen/Network/AWS/KinesisAnalytics/CreateApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/CreateApplication.hs
+++ /dev/null
@@ -1,209 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.CreateApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an Amazon Kinesis Analytics application. You can configure each application with one streaming source as input, application code to process the input, and up to three destinations where you want Amazon Kinesis Analytics to write the output data from your application. For an overview, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works.html How it Works> .
---
---
--- In the input configuration, you map the streaming source to an in-application stream, which you can think of as a constantly updating table. In the mapping, you must provide a schema for the in-application stream and map each data column in the in-application stream to a data element in the streaming source.
---
--- Your application code is one or more SQL statements that read input data, transform it, and generate output. Your application code can create one or more SQL artifacts like SQL streams or pumps.
---
--- In the output configuration, you can configure the application to write data from in-application streams created in your applications to up to three destinations.
---
--- To read data from your source stream or write data to destination streams, Amazon Kinesis Analytics needs your permissions. You grant these permissions by creating IAM roles. This operation requires permissions to perform the @kinesisanalytics:CreateApplication@ action.
---
--- For introductory exercises to create an Amazon Kinesis Analytics application, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/getting-started.html Getting Started> .
---
-module Network.AWS.KinesisAnalytics.CreateApplication
-    (
-    -- * Creating a Request
-      createApplication
-    , CreateApplication
-    -- * Request Lenses
-    , caApplicationDescription
-    , caInputs
-    , caCloudWatchLoggingOptions
-    , caOutputs
-    , caApplicationCode
-    , caApplicationName
-
-    -- * Destructuring the Response
-    , createApplicationResponse
-    , CreateApplicationResponse
-    -- * Response Lenses
-    , carsResponseStatus
-    , carsApplicationSummary
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | TBD
---
---
---
--- /See:/ 'createApplication' smart constructor.
-data CreateApplication = CreateApplication'
-  { _caApplicationDescription   :: !(Maybe Text)
-  , _caInputs                   :: !(Maybe [Input])
-  , _caCloudWatchLoggingOptions :: !(Maybe [CloudWatchLoggingOption])
-  , _caOutputs                  :: !(Maybe [Output])
-  , _caApplicationCode          :: !(Maybe Text)
-  , _caApplicationName          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'caApplicationDescription' - Summary description of the application.
---
--- * 'caInputs' - Use this parameter to configure the application input. You can configure your application to receive input from a single streaming source. In this configuration, you map this streaming source to an in-application stream that is created. Your application code can then query the in-application stream like a table (you can think of it as a constantly updating table). For the streaming source, you provide its Amazon Resource Name (ARN) and format of data on the stream (for example, JSON, CSV, etc.). You also must provide an IAM role that Amazon Kinesis Analytics can assume to read this stream on your behalf. To create the in-application stream, you need to specify a schema to transform your data into a schematized version used in SQL. In the schema, you provide the necessary mapping of the data elements in the streaming source to record columns in the in-app stream.
---
--- * 'caCloudWatchLoggingOptions' - Use this parameter to configure a CloudWatch log stream to monitor application configuration errors. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
---
--- * 'caOutputs' - You can configure application output to write data from any of the in-application streams to up to three destinations. These destinations can be Amazon Kinesis streams, Amazon Kinesis Firehose delivery streams, Amazon Lambda destinations, or any combination of the three. In the configuration, you specify the in-application stream name, the destination stream or Lambda function Amazon Resource Name (ARN), and the format to use when writing data. You must also provide an IAM role that Amazon Kinesis Analytics can assume to write to the destination stream or Lambda function on your behalf. In the output configuration, you also provide the output stream or Lambda function ARN. For stream destinations, you provide the format of data in the stream (for example, JSON, CSV). You also must provide an IAM role that Amazon Kinesis Analytics can assume to write to the stream or Lambda function on your behalf.
---
--- * 'caApplicationCode' - One or more SQL statements that read input data, transform it, and generate output. For example, you can write a SQL statement that reads data from one in-application stream, generates a running average of the number of advertisement clicks by vendor, and insert resulting rows in another in-application stream using pumps. For more information about the typical pattern, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html Application Code> .  You can provide such series of SQL statements, where output of one statement can be used as the input for the next statement. You store intermediate results by creating in-application streams and pumps. Note that the application code must create the streams with names specified in the @Outputs@ . For example, if your @Outputs@ defines output streams named @ExampleOutputStream1@ and @ExampleOutputStream2@ , then your application code must create these streams.
---
--- * 'caApplicationName' - Name of your Amazon Kinesis Analytics application (for example, @sample-app@ ).
-createApplication
-    :: Text -- ^ 'caApplicationName'
-    -> CreateApplication
-createApplication pApplicationName_ =
-  CreateApplication'
-    { _caApplicationDescription = Nothing
-    , _caInputs = Nothing
-    , _caCloudWatchLoggingOptions = Nothing
-    , _caOutputs = Nothing
-    , _caApplicationCode = Nothing
-    , _caApplicationName = pApplicationName_
-    }
-
-
--- | Summary description of the application.
-caApplicationDescription :: Lens' CreateApplication (Maybe Text)
-caApplicationDescription = lens _caApplicationDescription (\ s a -> s{_caApplicationDescription = a})
-
--- | Use this parameter to configure the application input. You can configure your application to receive input from a single streaming source. In this configuration, you map this streaming source to an in-application stream that is created. Your application code can then query the in-application stream like a table (you can think of it as a constantly updating table). For the streaming source, you provide its Amazon Resource Name (ARN) and format of data on the stream (for example, JSON, CSV, etc.). You also must provide an IAM role that Amazon Kinesis Analytics can assume to read this stream on your behalf. To create the in-application stream, you need to specify a schema to transform your data into a schematized version used in SQL. In the schema, you provide the necessary mapping of the data elements in the streaming source to record columns in the in-app stream.
-caInputs :: Lens' CreateApplication [Input]
-caInputs = lens _caInputs (\ s a -> s{_caInputs = a}) . _Default . _Coerce
-
--- | Use this parameter to configure a CloudWatch log stream to monitor application configuration errors. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
-caCloudWatchLoggingOptions :: Lens' CreateApplication [CloudWatchLoggingOption]
-caCloudWatchLoggingOptions = lens _caCloudWatchLoggingOptions (\ s a -> s{_caCloudWatchLoggingOptions = a}) . _Default . _Coerce
-
--- | You can configure application output to write data from any of the in-application streams to up to three destinations. These destinations can be Amazon Kinesis streams, Amazon Kinesis Firehose delivery streams, Amazon Lambda destinations, or any combination of the three. In the configuration, you specify the in-application stream name, the destination stream or Lambda function Amazon Resource Name (ARN), and the format to use when writing data. You must also provide an IAM role that Amazon Kinesis Analytics can assume to write to the destination stream or Lambda function on your behalf. In the output configuration, you also provide the output stream or Lambda function ARN. For stream destinations, you provide the format of data in the stream (for example, JSON, CSV). You also must provide an IAM role that Amazon Kinesis Analytics can assume to write to the stream or Lambda function on your behalf.
-caOutputs :: Lens' CreateApplication [Output]
-caOutputs = lens _caOutputs (\ s a -> s{_caOutputs = a}) . _Default . _Coerce
-
--- | One or more SQL statements that read input data, transform it, and generate output. For example, you can write a SQL statement that reads data from one in-application stream, generates a running average of the number of advertisement clicks by vendor, and insert resulting rows in another in-application stream using pumps. For more information about the typical pattern, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html Application Code> .  You can provide such series of SQL statements, where output of one statement can be used as the input for the next statement. You store intermediate results by creating in-application streams and pumps. Note that the application code must create the streams with names specified in the @Outputs@ . For example, if your @Outputs@ defines output streams named @ExampleOutputStream1@ and @ExampleOutputStream2@ , then your application code must create these streams.
-caApplicationCode :: Lens' CreateApplication (Maybe Text)
-caApplicationCode = lens _caApplicationCode (\ s a -> s{_caApplicationCode = a})
-
--- | Name of your Amazon Kinesis Analytics application (for example, @sample-app@ ).
-caApplicationName :: Lens' CreateApplication Text
-caApplicationName = lens _caApplicationName (\ s a -> s{_caApplicationName = a})
-
-instance AWSRequest CreateApplication where
-        type Rs CreateApplication = CreateApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateApplicationResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "ApplicationSummary"))
-
-instance Hashable CreateApplication where
-
-instance NFData CreateApplication where
-
-instance ToHeaders CreateApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.CreateApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateApplication where
-        toJSON CreateApplication'{..}
-          = object
-              (catMaybes
-                 [("ApplicationDescription" .=) <$>
-                    _caApplicationDescription,
-                  ("Inputs" .=) <$> _caInputs,
-                  ("CloudWatchLoggingOptions" .=) <$>
-                    _caCloudWatchLoggingOptions,
-                  ("Outputs" .=) <$> _caOutputs,
-                  ("ApplicationCode" .=) <$> _caApplicationCode,
-                  Just ("ApplicationName" .= _caApplicationName)])
-
-instance ToPath CreateApplication where
-        toPath = const "/"
-
-instance ToQuery CreateApplication where
-        toQuery = const mempty
-
--- | TBD
---
---
---
--- /See:/ 'createApplicationResponse' smart constructor.
-data CreateApplicationResponse = CreateApplicationResponse'
-  { _carsResponseStatus     :: !Int
-  , _carsApplicationSummary :: !ApplicationSummary
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'carsResponseStatus' - -- | The response status code.
---
--- * 'carsApplicationSummary' - In response to your @CreateApplication@ request, Amazon Kinesis Analytics returns a response with a summary of the application it created, including the application Amazon Resource Name (ARN), name, and status.
-createApplicationResponse
-    :: Int -- ^ 'carsResponseStatus'
-    -> ApplicationSummary -- ^ 'carsApplicationSummary'
-    -> CreateApplicationResponse
-createApplicationResponse pResponseStatus_ pApplicationSummary_ =
-  CreateApplicationResponse'
-    { _carsResponseStatus = pResponseStatus_
-    , _carsApplicationSummary = pApplicationSummary_
-    }
-
-
--- | -- | The response status code.
-carsResponseStatus :: Lens' CreateApplicationResponse Int
-carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a})
-
--- | In response to your @CreateApplication@ request, Amazon Kinesis Analytics returns a response with a summary of the application it created, including the application Amazon Resource Name (ARN), name, and status.
-carsApplicationSummary :: Lens' CreateApplicationResponse ApplicationSummary
-carsApplicationSummary = lens _carsApplicationSummary (\ s a -> s{_carsApplicationSummary = a})
-
-instance NFData CreateApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/DeleteApplication.hs b/gen/Network/AWS/KinesisAnalytics/DeleteApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DeleteApplication.hs
+++ /dev/null
@@ -1,147 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DeleteApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified application. Amazon Kinesis Analytics halts application execution and deletes the application, including any application artifacts (such as in-application streams, reference table, and application code).
---
---
--- This operation requires permissions to perform the @kinesisanalytics:DeleteApplication@ action.
---
-module Network.AWS.KinesisAnalytics.DeleteApplication
-    (
-    -- * Creating a Request
-      deleteApplication
-    , DeleteApplication
-    -- * Request Lenses
-    , dApplicationName
-    , dCreateTimestamp
-
-    -- * Destructuring the Response
-    , deleteApplicationResponse
-    , DeleteApplicationResponse
-    -- * Response Lenses
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'deleteApplication' smart constructor.
-data DeleteApplication = DeleteApplication'
-  { _dApplicationName :: !Text
-  , _dCreateTimestamp :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dApplicationName' - Name of the Amazon Kinesis Analytics application to delete.
---
--- * 'dCreateTimestamp' - You can use the @DescribeApplication@ operation to get this value.
-deleteApplication
-    :: Text -- ^ 'dApplicationName'
-    -> UTCTime -- ^ 'dCreateTimestamp'
-    -> DeleteApplication
-deleteApplication pApplicationName_ pCreateTimestamp_ =
-  DeleteApplication'
-    { _dApplicationName = pApplicationName_
-    , _dCreateTimestamp = _Time # pCreateTimestamp_
-    }
-
-
--- | Name of the Amazon Kinesis Analytics application to delete.
-dApplicationName :: Lens' DeleteApplication Text
-dApplicationName = lens _dApplicationName (\ s a -> s{_dApplicationName = a})
-
--- | You can use the @DescribeApplication@ operation to get this value.
-dCreateTimestamp :: Lens' DeleteApplication UTCTime
-dCreateTimestamp = lens _dCreateTimestamp (\ s a -> s{_dCreateTimestamp = a}) . _Time
-
-instance AWSRequest DeleteApplication where
-        type Rs DeleteApplication = DeleteApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteApplication where
-
-instance NFData DeleteApplication where
-
-instance ToHeaders DeleteApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DeleteApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteApplication where
-        toJSON DeleteApplication'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _dApplicationName),
-                  Just ("CreateTimestamp" .= _dCreateTimestamp)])
-
-instance ToPath DeleteApplication where
-        toPath = const "/"
-
-instance ToQuery DeleteApplication where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'deleteApplicationResponse' smart constructor.
-newtype DeleteApplicationResponse = DeleteApplicationResponse'
-  { _drsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteApplicationResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteApplicationResponse
-deleteApplicationResponse pResponseStatus_ =
-  DeleteApplicationResponse' {_drsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteApplicationResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs b/gen/Network/AWS/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationCloudWatchLoggingOption.hs
+++ /dev/null
@@ -1,171 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a CloudWatch log stream from an application. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
---
---
-module Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption
-    (
-    -- * Creating a Request
-      deleteApplicationCloudWatchLoggingOption
-    , DeleteApplicationCloudWatchLoggingOption
-    -- * Request Lenses
-    , dacwloApplicationName
-    , dacwloCurrentApplicationVersionId
-    , dacwloCloudWatchLoggingOptionId
-
-    -- * Destructuring the Response
-    , deleteApplicationCloudWatchLoggingOptionResponse
-    , DeleteApplicationCloudWatchLoggingOptionResponse
-    -- * Response Lenses
-    , dacwlorsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteApplicationCloudWatchLoggingOption' smart constructor.
-data DeleteApplicationCloudWatchLoggingOption = DeleteApplicationCloudWatchLoggingOption'
-  { _dacwloApplicationName             :: !Text
-  , _dacwloCurrentApplicationVersionId :: !Nat
-  , _dacwloCloudWatchLoggingOptionId   :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationCloudWatchLoggingOption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dacwloApplicationName' - The Kinesis Analytics application name.
---
--- * 'dacwloCurrentApplicationVersionId' - The version ID of the Kinesis Analytics application.
---
--- * 'dacwloCloudWatchLoggingOptionId' - The @CloudWatchLoggingOptionId@ of the CloudWatch logging option to delete. You can get the @CloudWatchLoggingOptionId@ by using the 'DescribeApplication' operation.
-deleteApplicationCloudWatchLoggingOption
-    :: Text -- ^ 'dacwloApplicationName'
-    -> Natural -- ^ 'dacwloCurrentApplicationVersionId'
-    -> Text -- ^ 'dacwloCloudWatchLoggingOptionId'
-    -> DeleteApplicationCloudWatchLoggingOption
-deleteApplicationCloudWatchLoggingOption pApplicationName_ pCurrentApplicationVersionId_ pCloudWatchLoggingOptionId_ =
-  DeleteApplicationCloudWatchLoggingOption'
-    { _dacwloApplicationName = pApplicationName_
-    , _dacwloCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _dacwloCloudWatchLoggingOptionId = pCloudWatchLoggingOptionId_
-    }
-
-
--- | The Kinesis Analytics application name.
-dacwloApplicationName :: Lens' DeleteApplicationCloudWatchLoggingOption Text
-dacwloApplicationName = lens _dacwloApplicationName (\ s a -> s{_dacwloApplicationName = a})
-
--- | The version ID of the Kinesis Analytics application.
-dacwloCurrentApplicationVersionId :: Lens' DeleteApplicationCloudWatchLoggingOption Natural
-dacwloCurrentApplicationVersionId = lens _dacwloCurrentApplicationVersionId (\ s a -> s{_dacwloCurrentApplicationVersionId = a}) . _Nat
-
--- | The @CloudWatchLoggingOptionId@ of the CloudWatch logging option to delete. You can get the @CloudWatchLoggingOptionId@ by using the 'DescribeApplication' operation.
-dacwloCloudWatchLoggingOptionId :: Lens' DeleteApplicationCloudWatchLoggingOption Text
-dacwloCloudWatchLoggingOptionId = lens _dacwloCloudWatchLoggingOptionId (\ s a -> s{_dacwloCloudWatchLoggingOptionId = a})
-
-instance AWSRequest
-           DeleteApplicationCloudWatchLoggingOption
-         where
-        type Rs DeleteApplicationCloudWatchLoggingOption =
-             DeleteApplicationCloudWatchLoggingOptionResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationCloudWatchLoggingOptionResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           DeleteApplicationCloudWatchLoggingOption
-         where
-
-instance NFData
-           DeleteApplicationCloudWatchLoggingOption
-         where
-
-instance ToHeaders
-           DeleteApplicationCloudWatchLoggingOption
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DeleteApplicationCloudWatchLoggingOption"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           DeleteApplicationCloudWatchLoggingOption
-         where
-        toJSON DeleteApplicationCloudWatchLoggingOption'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _dacwloApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _dacwloCurrentApplicationVersionId),
-                  Just
-                    ("CloudWatchLoggingOptionId" .=
-                       _dacwloCloudWatchLoggingOptionId)])
-
-instance ToPath
-           DeleteApplicationCloudWatchLoggingOption
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteApplicationCloudWatchLoggingOption
-         where
-        toQuery = const mempty
-
--- | /See:/ 'deleteApplicationCloudWatchLoggingOptionResponse' smart constructor.
-newtype DeleteApplicationCloudWatchLoggingOptionResponse = DeleteApplicationCloudWatchLoggingOptionResponse'
-  { _dacwlorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationCloudWatchLoggingOptionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dacwlorsResponseStatus' - -- | The response status code.
-deleteApplicationCloudWatchLoggingOptionResponse
-    :: Int -- ^ 'dacwlorsResponseStatus'
-    -> DeleteApplicationCloudWatchLoggingOptionResponse
-deleteApplicationCloudWatchLoggingOptionResponse pResponseStatus_ =
-  DeleteApplicationCloudWatchLoggingOptionResponse'
-    {_dacwlorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dacwlorsResponseStatus :: Lens' DeleteApplicationCloudWatchLoggingOptionResponse Int
-dacwlorsResponseStatus = lens _dacwlorsResponseStatus (\ s a -> s{_dacwlorsResponseStatus = a})
-
-instance NFData
-           DeleteApplicationCloudWatchLoggingOptionResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs b/gen/Network/AWS/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationInputProcessingConfiguration.hs
+++ /dev/null
@@ -1,171 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an 'InputProcessingConfiguration' from an input.
---
---
-module Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration
-    (
-    -- * Creating a Request
-      deleteApplicationInputProcessingConfiguration
-    , DeleteApplicationInputProcessingConfiguration
-    -- * Request Lenses
-    , daipcApplicationName
-    , daipcCurrentApplicationVersionId
-    , daipcInputId
-
-    -- * Destructuring the Response
-    , deleteApplicationInputProcessingConfigurationResponse
-    , DeleteApplicationInputProcessingConfigurationResponse
-    -- * Response Lenses
-    , daipcrsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteApplicationInputProcessingConfiguration' smart constructor.
-data DeleteApplicationInputProcessingConfiguration = DeleteApplicationInputProcessingConfiguration'
-  { _daipcApplicationName             :: !Text
-  , _daipcCurrentApplicationVersionId :: !Nat
-  , _daipcInputId                     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationInputProcessingConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daipcApplicationName' - The Kinesis Analytics application name.
---
--- * 'daipcCurrentApplicationVersionId' - The version ID of the Kinesis Analytics application.
---
--- * 'daipcInputId' - The ID of the input configuration from which to delete the input processing configuration. You can get a list of the input IDs for an application by using the 'DescribeApplication' operation.
-deleteApplicationInputProcessingConfiguration
-    :: Text -- ^ 'daipcApplicationName'
-    -> Natural -- ^ 'daipcCurrentApplicationVersionId'
-    -> Text -- ^ 'daipcInputId'
-    -> DeleteApplicationInputProcessingConfiguration
-deleteApplicationInputProcessingConfiguration pApplicationName_ pCurrentApplicationVersionId_ pInputId_ =
-  DeleteApplicationInputProcessingConfiguration'
-    { _daipcApplicationName = pApplicationName_
-    , _daipcCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _daipcInputId = pInputId_
-    }
-
-
--- | The Kinesis Analytics application name.
-daipcApplicationName :: Lens' DeleteApplicationInputProcessingConfiguration Text
-daipcApplicationName = lens _daipcApplicationName (\ s a -> s{_daipcApplicationName = a})
-
--- | The version ID of the Kinesis Analytics application.
-daipcCurrentApplicationVersionId :: Lens' DeleteApplicationInputProcessingConfiguration Natural
-daipcCurrentApplicationVersionId = lens _daipcCurrentApplicationVersionId (\ s a -> s{_daipcCurrentApplicationVersionId = a}) . _Nat
-
--- | The ID of the input configuration from which to delete the input processing configuration. You can get a list of the input IDs for an application by using the 'DescribeApplication' operation.
-daipcInputId :: Lens' DeleteApplicationInputProcessingConfiguration Text
-daipcInputId = lens _daipcInputId (\ s a -> s{_daipcInputId = a})
-
-instance AWSRequest
-           DeleteApplicationInputProcessingConfiguration
-         where
-        type Rs DeleteApplicationInputProcessingConfiguration
-             =
-             DeleteApplicationInputProcessingConfigurationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationInputProcessingConfigurationResponse'
-                   <$> (pure (fromEnum s)))
-
-instance Hashable
-           DeleteApplicationInputProcessingConfiguration
-         where
-
-instance NFData
-           DeleteApplicationInputProcessingConfiguration
-         where
-
-instance ToHeaders
-           DeleteApplicationInputProcessingConfiguration
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DeleteApplicationInputProcessingConfiguration"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           DeleteApplicationInputProcessingConfiguration
-         where
-        toJSON
-          DeleteApplicationInputProcessingConfiguration'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _daipcApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _daipcCurrentApplicationVersionId),
-                  Just ("InputId" .= _daipcInputId)])
-
-instance ToPath
-           DeleteApplicationInputProcessingConfiguration
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteApplicationInputProcessingConfiguration
-         where
-        toQuery = const mempty
-
--- | /See:/ 'deleteApplicationInputProcessingConfigurationResponse' smart constructor.
-newtype DeleteApplicationInputProcessingConfigurationResponse = DeleteApplicationInputProcessingConfigurationResponse'
-  { _daipcrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationInputProcessingConfigurationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daipcrsResponseStatus' - -- | The response status code.
-deleteApplicationInputProcessingConfigurationResponse
-    :: Int -- ^ 'daipcrsResponseStatus'
-    -> DeleteApplicationInputProcessingConfigurationResponse
-deleteApplicationInputProcessingConfigurationResponse pResponseStatus_ =
-  DeleteApplicationInputProcessingConfigurationResponse'
-    {_daipcrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-daipcrsResponseStatus :: Lens' DeleteApplicationInputProcessingConfigurationResponse Int
-daipcrsResponseStatus = lens _daipcrsResponseStatus (\ s a -> s{_daipcrsResponseStatus = a})
-
-instance NFData
-           DeleteApplicationInputProcessingConfigurationResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationOutput.hs b/gen/Network/AWS/KinesisAnalytics/DeleteApplicationOutput.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationOutput.hs
+++ /dev/null
@@ -1,162 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DeleteApplicationOutput
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes output destination configuration from your application configuration. Amazon Kinesis Analytics will no longer write data from the corresponding in-application stream to the external output destination.
---
---
--- This operation requires permissions to perform the @kinesisanalytics:DeleteApplicationOutput@ action.
---
-module Network.AWS.KinesisAnalytics.DeleteApplicationOutput
-    (
-    -- * Creating a Request
-      deleteApplicationOutput
-    , DeleteApplicationOutput
-    -- * Request Lenses
-    , daoApplicationName
-    , daoCurrentApplicationVersionId
-    , daoOutputId
-
-    -- * Destructuring the Response
-    , deleteApplicationOutputResponse
-    , DeleteApplicationOutputResponse
-    -- * Response Lenses
-    , daorsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'deleteApplicationOutput' smart constructor.
-data DeleteApplicationOutput = DeleteApplicationOutput'
-  { _daoApplicationName             :: !Text
-  , _daoCurrentApplicationVersionId :: !Nat
-  , _daoOutputId                    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daoApplicationName' - Amazon Kinesis Analytics application name.
---
--- * 'daoCurrentApplicationVersionId' - Amazon Kinesis Analytics application version. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
---
--- * 'daoOutputId' - The ID of the configuration to delete. Each output configuration that is added to the application, either when the application is created or later using the 'AddApplicationOutput' operation, has a unique ID. You need to provide the ID to uniquely identify the output configuration that you want to delete from the application configuration. You can use the 'DescribeApplication' operation to get the specific @OutputId@ .
-deleteApplicationOutput
-    :: Text -- ^ 'daoApplicationName'
-    -> Natural -- ^ 'daoCurrentApplicationVersionId'
-    -> Text -- ^ 'daoOutputId'
-    -> DeleteApplicationOutput
-deleteApplicationOutput pApplicationName_ pCurrentApplicationVersionId_ pOutputId_ =
-  DeleteApplicationOutput'
-    { _daoApplicationName = pApplicationName_
-    , _daoCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _daoOutputId = pOutputId_
-    }
-
-
--- | Amazon Kinesis Analytics application name.
-daoApplicationName :: Lens' DeleteApplicationOutput Text
-daoApplicationName = lens _daoApplicationName (\ s a -> s{_daoApplicationName = a})
-
--- | Amazon Kinesis Analytics application version. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
-daoCurrentApplicationVersionId :: Lens' DeleteApplicationOutput Natural
-daoCurrentApplicationVersionId = lens _daoCurrentApplicationVersionId (\ s a -> s{_daoCurrentApplicationVersionId = a}) . _Nat
-
--- | The ID of the configuration to delete. Each output configuration that is added to the application, either when the application is created or later using the 'AddApplicationOutput' operation, has a unique ID. You need to provide the ID to uniquely identify the output configuration that you want to delete from the application configuration. You can use the 'DescribeApplication' operation to get the specific @OutputId@ .
-daoOutputId :: Lens' DeleteApplicationOutput Text
-daoOutputId = lens _daoOutputId (\ s a -> s{_daoOutputId = a})
-
-instance AWSRequest DeleteApplicationOutput where
-        type Rs DeleteApplicationOutput =
-             DeleteApplicationOutputResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationOutputResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteApplicationOutput where
-
-instance NFData DeleteApplicationOutput where
-
-instance ToHeaders DeleteApplicationOutput where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DeleteApplicationOutput"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteApplicationOutput where
-        toJSON DeleteApplicationOutput'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _daoApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _daoCurrentApplicationVersionId),
-                  Just ("OutputId" .= _daoOutputId)])
-
-instance ToPath DeleteApplicationOutput where
-        toPath = const "/"
-
-instance ToQuery DeleteApplicationOutput where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'deleteApplicationOutputResponse' smart constructor.
-newtype DeleteApplicationOutputResponse = DeleteApplicationOutputResponse'
-  { _daorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationOutputResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daorsResponseStatus' - -- | The response status code.
-deleteApplicationOutputResponse
-    :: Int -- ^ 'daorsResponseStatus'
-    -> DeleteApplicationOutputResponse
-deleteApplicationOutputResponse pResponseStatus_ =
-  DeleteApplicationOutputResponse' {_daorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-daorsResponseStatus :: Lens' DeleteApplicationOutputResponse Int
-daorsResponseStatus = lens _daorsResponseStatus (\ s a -> s{_daorsResponseStatus = a})
-
-instance NFData DeleteApplicationOutputResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs b/gen/Network/AWS/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DeleteApplicationReferenceDataSource.hs
+++ /dev/null
@@ -1,169 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a reference data source configuration from the specified application configuration.
---
---
--- If the application is running, Amazon Kinesis Analytics immediately removes the in-application table that you created using the 'AddApplicationReferenceDataSource' operation.
---
--- This operation requires permissions to perform the @kinesisanalytics.DeleteApplicationReferenceDataSource@ action.
---
-module Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource
-    (
-    -- * Creating a Request
-      deleteApplicationReferenceDataSource
-    , DeleteApplicationReferenceDataSource
-    -- * Request Lenses
-    , dardsApplicationName
-    , dardsCurrentApplicationVersionId
-    , dardsReferenceId
-
-    -- * Destructuring the Response
-    , deleteApplicationReferenceDataSourceResponse
-    , DeleteApplicationReferenceDataSourceResponse
-    -- * Response Lenses
-    , dardsrsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteApplicationReferenceDataSource' smart constructor.
-data DeleteApplicationReferenceDataSource = DeleteApplicationReferenceDataSource'
-  { _dardsApplicationName             :: !Text
-  , _dardsCurrentApplicationVersionId :: !Nat
-  , _dardsReferenceId                 :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationReferenceDataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dardsApplicationName' - Name of an existing application.
---
--- * 'dardsCurrentApplicationVersionId' - Version of the application. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
---
--- * 'dardsReferenceId' - ID of the reference data source. When you add a reference data source to your application using the 'AddApplicationReferenceDataSource' , Amazon Kinesis Analytics assigns an ID. You can use the 'DescribeApplication' operation to get the reference ID.
-deleteApplicationReferenceDataSource
-    :: Text -- ^ 'dardsApplicationName'
-    -> Natural -- ^ 'dardsCurrentApplicationVersionId'
-    -> Text -- ^ 'dardsReferenceId'
-    -> DeleteApplicationReferenceDataSource
-deleteApplicationReferenceDataSource pApplicationName_ pCurrentApplicationVersionId_ pReferenceId_ =
-  DeleteApplicationReferenceDataSource'
-    { _dardsApplicationName = pApplicationName_
-    , _dardsCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _dardsReferenceId = pReferenceId_
-    }
-
-
--- | Name of an existing application.
-dardsApplicationName :: Lens' DeleteApplicationReferenceDataSource Text
-dardsApplicationName = lens _dardsApplicationName (\ s a -> s{_dardsApplicationName = a})
-
--- | Version of the application. You can use the 'DescribeApplication' operation to get the current application version. If the version specified is not the current version, the @ConcurrentModificationException@ is returned.
-dardsCurrentApplicationVersionId :: Lens' DeleteApplicationReferenceDataSource Natural
-dardsCurrentApplicationVersionId = lens _dardsCurrentApplicationVersionId (\ s a -> s{_dardsCurrentApplicationVersionId = a}) . _Nat
-
--- | ID of the reference data source. When you add a reference data source to your application using the 'AddApplicationReferenceDataSource' , Amazon Kinesis Analytics assigns an ID. You can use the 'DescribeApplication' operation to get the reference ID.
-dardsReferenceId :: Lens' DeleteApplicationReferenceDataSource Text
-dardsReferenceId = lens _dardsReferenceId (\ s a -> s{_dardsReferenceId = a})
-
-instance AWSRequest
-           DeleteApplicationReferenceDataSource
-         where
-        type Rs DeleteApplicationReferenceDataSource =
-             DeleteApplicationReferenceDataSourceResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationReferenceDataSourceResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           DeleteApplicationReferenceDataSource
-         where
-
-instance NFData DeleteApplicationReferenceDataSource
-         where
-
-instance ToHeaders
-           DeleteApplicationReferenceDataSource
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DeleteApplicationReferenceDataSource"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteApplicationReferenceDataSource
-         where
-        toJSON DeleteApplicationReferenceDataSource'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _dardsApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _dardsCurrentApplicationVersionId),
-                  Just ("ReferenceId" .= _dardsReferenceId)])
-
-instance ToPath DeleteApplicationReferenceDataSource
-         where
-        toPath = const "/"
-
-instance ToQuery DeleteApplicationReferenceDataSource
-         where
-        toQuery = const mempty
-
--- | /See:/ 'deleteApplicationReferenceDataSourceResponse' smart constructor.
-newtype DeleteApplicationReferenceDataSourceResponse = DeleteApplicationReferenceDataSourceResponse'
-  { _dardsrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationReferenceDataSourceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dardsrsResponseStatus' - -- | The response status code.
-deleteApplicationReferenceDataSourceResponse
-    :: Int -- ^ 'dardsrsResponseStatus'
-    -> DeleteApplicationReferenceDataSourceResponse
-deleteApplicationReferenceDataSourceResponse pResponseStatus_ =
-  DeleteApplicationReferenceDataSourceResponse'
-    {_dardsrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dardsrsResponseStatus :: Lens' DeleteApplicationReferenceDataSourceResponse Int
-dardsrsResponseStatus = lens _dardsrsResponseStatus (\ s a -> s{_dardsrsResponseStatus = a})
-
-instance NFData
-           DeleteApplicationReferenceDataSourceResponse
-         where
diff --git a/gen/Network/AWS/KinesisAnalytics/DescribeApplication.hs b/gen/Network/AWS/KinesisAnalytics/DescribeApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DescribeApplication.hs
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DescribeApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns information about a specific Amazon Kinesis Analytics application.
---
---
--- If you want to retrieve a list of all applications in your account, use the 'ListApplications' operation.
---
--- This operation requires permissions to perform the @kinesisanalytics:DescribeApplication@ action. You can use @DescribeApplication@ to get the current application versionId, which you need to call other operations such as @Update@ .
---
-module Network.AWS.KinesisAnalytics.DescribeApplication
-    (
-    -- * Creating a Request
-      describeApplication
-    , DescribeApplication
-    -- * Request Lenses
-    , daApplicationName
-
-    -- * Destructuring the Response
-    , describeApplicationResponse
-    , DescribeApplicationResponse
-    -- * Response Lenses
-    , darsResponseStatus
-    , darsApplicationDetail
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'describeApplication' smart constructor.
-newtype DescribeApplication = DescribeApplication'
-  { _daApplicationName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daApplicationName' - Name of the application.
-describeApplication
-    :: Text -- ^ 'daApplicationName'
-    -> DescribeApplication
-describeApplication pApplicationName_ =
-  DescribeApplication' {_daApplicationName = pApplicationName_}
-
-
--- | Name of the application.
-daApplicationName :: Lens' DescribeApplication Text
-daApplicationName = lens _daApplicationName (\ s a -> s{_daApplicationName = a})
-
-instance AWSRequest DescribeApplication where
-        type Rs DescribeApplication =
-             DescribeApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeApplicationResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "ApplicationDetail"))
-
-instance Hashable DescribeApplication where
-
-instance NFData DescribeApplication where
-
-instance ToHeaders DescribeApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DescribeApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeApplication where
-        toJSON DescribeApplication'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _daApplicationName)])
-
-instance ToPath DescribeApplication where
-        toPath = const "/"
-
-instance ToQuery DescribeApplication where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'describeApplicationResponse' smart constructor.
-data DescribeApplicationResponse = DescribeApplicationResponse'
-  { _darsResponseStatus    :: !Int
-  , _darsApplicationDetail :: !ApplicationDetail
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'darsResponseStatus' - -- | The response status code.
---
--- * 'darsApplicationDetail' - Provides a description of the application, such as the application Amazon Resource Name (ARN), status, latest version, and input and output configuration details.
-describeApplicationResponse
-    :: Int -- ^ 'darsResponseStatus'
-    -> ApplicationDetail -- ^ 'darsApplicationDetail'
-    -> DescribeApplicationResponse
-describeApplicationResponse pResponseStatus_ pApplicationDetail_ =
-  DescribeApplicationResponse'
-    { _darsResponseStatus = pResponseStatus_
-    , _darsApplicationDetail = pApplicationDetail_
-    }
-
-
--- | -- | The response status code.
-darsResponseStatus :: Lens' DescribeApplicationResponse Int
-darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a})
-
--- | Provides a description of the application, such as the application Amazon Resource Name (ARN), status, latest version, and input and output configuration details.
-darsApplicationDetail :: Lens' DescribeApplicationResponse ApplicationDetail
-darsApplicationDetail = lens _darsApplicationDetail (\ s a -> s{_darsApplicationDetail = a})
-
-instance NFData DescribeApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/DiscoverInputSchema.hs b/gen/Network/AWS/KinesisAnalytics/DiscoverInputSchema.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/DiscoverInputSchema.hs
+++ /dev/null
@@ -1,219 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.DiscoverInputSchema
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Infers a schema by evaluating sample records on the specified streaming source (Amazon Kinesis stream or Amazon Kinesis Firehose delivery stream) or S3 object. In the response, the operation returns the inferred schema and also the sample records that the operation used to infer the schema.
---
---
--- You can use the inferred schema when configuring a streaming source for your application. For conceptual information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> . Note that when you create an application using the Amazon Kinesis Analytics console, the console uses this operation to infer a schema and show it in the console user interface.
---
--- This operation requires permissions to perform the @kinesisanalytics:DiscoverInputSchema@ action.
---
-module Network.AWS.KinesisAnalytics.DiscoverInputSchema
-    (
-    -- * Creating a Request
-      discoverInputSchema
-    , DiscoverInputSchema
-    -- * Request Lenses
-    , disInputStartingPositionConfiguration
-    , disInputProcessingConfiguration
-    , disS3Configuration
-    , disResourceARN
-    , disRoleARN
-
-    -- * Destructuring the Response
-    , discoverInputSchemaResponse
-    , DiscoverInputSchemaResponse
-    -- * Response Lenses
-    , disrsRawInputRecords
-    , disrsInputSchema
-    , disrsProcessedInputRecords
-    , disrsParsedInputRecords
-    , disrsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'discoverInputSchema' smart constructor.
-data DiscoverInputSchema = DiscoverInputSchema'
-  { _disInputStartingPositionConfiguration :: !(Maybe InputStartingPositionConfiguration)
-  , _disInputProcessingConfiguration :: !(Maybe InputProcessingConfiguration)
-  , _disS3Configuration :: !(Maybe S3Configuration)
-  , _disResourceARN :: !(Maybe Text)
-  , _disRoleARN :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DiscoverInputSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'disInputStartingPositionConfiguration' - Point at which you want Amazon Kinesis Analytics to start reading records from the specified streaming source discovery purposes.
---
--- * 'disInputProcessingConfiguration' - The 'InputProcessingConfiguration' to use to preprocess the records before discovering the schema of the records.
---
--- * 'disS3Configuration' - Specify this parameter to discover a schema from data in an S3 object.
---
--- * 'disResourceARN' - Amazon Resource Name (ARN) of the streaming source.
---
--- * 'disRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf.
-discoverInputSchema
-    :: DiscoverInputSchema
-discoverInputSchema =
-  DiscoverInputSchema'
-    { _disInputStartingPositionConfiguration = Nothing
-    , _disInputProcessingConfiguration = Nothing
-    , _disS3Configuration = Nothing
-    , _disResourceARN = Nothing
-    , _disRoleARN = Nothing
-    }
-
-
--- | Point at which you want Amazon Kinesis Analytics to start reading records from the specified streaming source discovery purposes.
-disInputStartingPositionConfiguration :: Lens' DiscoverInputSchema (Maybe InputStartingPositionConfiguration)
-disInputStartingPositionConfiguration = lens _disInputStartingPositionConfiguration (\ s a -> s{_disInputStartingPositionConfiguration = a})
-
--- | The 'InputProcessingConfiguration' to use to preprocess the records before discovering the schema of the records.
-disInputProcessingConfiguration :: Lens' DiscoverInputSchema (Maybe InputProcessingConfiguration)
-disInputProcessingConfiguration = lens _disInputProcessingConfiguration (\ s a -> s{_disInputProcessingConfiguration = a})
-
--- | Specify this parameter to discover a schema from data in an S3 object.
-disS3Configuration :: Lens' DiscoverInputSchema (Maybe S3Configuration)
-disS3Configuration = lens _disS3Configuration (\ s a -> s{_disS3Configuration = a})
-
--- | Amazon Resource Name (ARN) of the streaming source.
-disResourceARN :: Lens' DiscoverInputSchema (Maybe Text)
-disResourceARN = lens _disResourceARN (\ s a -> s{_disResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf.
-disRoleARN :: Lens' DiscoverInputSchema (Maybe Text)
-disRoleARN = lens _disRoleARN (\ s a -> s{_disRoleARN = a})
-
-instance AWSRequest DiscoverInputSchema where
-        type Rs DiscoverInputSchema =
-             DiscoverInputSchemaResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DiscoverInputSchemaResponse' <$>
-                   (x .?> "RawInputRecords" .!@ mempty) <*>
-                     (x .?> "InputSchema")
-                     <*> (x .?> "ProcessedInputRecords" .!@ mempty)
-                     <*> (x .?> "ParsedInputRecords" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DiscoverInputSchema where
-
-instance NFData DiscoverInputSchema where
-
-instance ToHeaders DiscoverInputSchema where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.DiscoverInputSchema" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DiscoverInputSchema where
-        toJSON DiscoverInputSchema'{..}
-          = object
-              (catMaybes
-                 [("InputStartingPositionConfiguration" .=) <$>
-                    _disInputStartingPositionConfiguration,
-                  ("InputProcessingConfiguration" .=) <$>
-                    _disInputProcessingConfiguration,
-                  ("S3Configuration" .=) <$> _disS3Configuration,
-                  ("ResourceARN" .=) <$> _disResourceARN,
-                  ("RoleARN" .=) <$> _disRoleARN])
-
-instance ToPath DiscoverInputSchema where
-        toPath = const "/"
-
-instance ToQuery DiscoverInputSchema where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'discoverInputSchemaResponse' smart constructor.
-data DiscoverInputSchemaResponse = DiscoverInputSchemaResponse'
-  { _disrsRawInputRecords       :: !(Maybe [Text])
-  , _disrsInputSchema           :: !(Maybe SourceSchema)
-  , _disrsProcessedInputRecords :: !(Maybe [Text])
-  , _disrsParsedInputRecords    :: !(Maybe [[Text]])
-  , _disrsResponseStatus        :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DiscoverInputSchemaResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'disrsRawInputRecords' - Raw stream data that was sampled to infer the schema.
---
--- * 'disrsInputSchema' - Schema inferred from the streaming source. It identifies the format of the data in the streaming source and how each data element maps to corresponding columns in the in-application stream that you can create.
---
--- * 'disrsProcessedInputRecords' - Stream data that was modified by the processor specified in the @InputProcessingConfiguration@ parameter.
---
--- * 'disrsParsedInputRecords' - An array of elements, where each element corresponds to a row in a stream record (a stream record can have more than one row).
---
--- * 'disrsResponseStatus' - -- | The response status code.
-discoverInputSchemaResponse
-    :: Int -- ^ 'disrsResponseStatus'
-    -> DiscoverInputSchemaResponse
-discoverInputSchemaResponse pResponseStatus_ =
-  DiscoverInputSchemaResponse'
-    { _disrsRawInputRecords = Nothing
-    , _disrsInputSchema = Nothing
-    , _disrsProcessedInputRecords = Nothing
-    , _disrsParsedInputRecords = Nothing
-    , _disrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Raw stream data that was sampled to infer the schema.
-disrsRawInputRecords :: Lens' DiscoverInputSchemaResponse [Text]
-disrsRawInputRecords = lens _disrsRawInputRecords (\ s a -> s{_disrsRawInputRecords = a}) . _Default . _Coerce
-
--- | Schema inferred from the streaming source. It identifies the format of the data in the streaming source and how each data element maps to corresponding columns in the in-application stream that you can create.
-disrsInputSchema :: Lens' DiscoverInputSchemaResponse (Maybe SourceSchema)
-disrsInputSchema = lens _disrsInputSchema (\ s a -> s{_disrsInputSchema = a})
-
--- | Stream data that was modified by the processor specified in the @InputProcessingConfiguration@ parameter.
-disrsProcessedInputRecords :: Lens' DiscoverInputSchemaResponse [Text]
-disrsProcessedInputRecords = lens _disrsProcessedInputRecords (\ s a -> s{_disrsProcessedInputRecords = a}) . _Default . _Coerce
-
--- | An array of elements, where each element corresponds to a row in a stream record (a stream record can have more than one row).
-disrsParsedInputRecords :: Lens' DiscoverInputSchemaResponse [[Text]]
-disrsParsedInputRecords = lens _disrsParsedInputRecords (\ s a -> s{_disrsParsedInputRecords = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-disrsResponseStatus :: Lens' DiscoverInputSchemaResponse Int
-disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a})
-
-instance NFData DiscoverInputSchemaResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/ListApplications.hs b/gen/Network/AWS/KinesisAnalytics/ListApplications.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/ListApplications.hs
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.ListApplications
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a list of Amazon Kinesis Analytics applications in your account. For each application, the response includes the application name, Amazon Resource Name (ARN), and status. If the response returns the @HasMoreApplications@ value as true, you can send another request by adding the @ExclusiveStartApplicationName@ in the request body, and set the value of this to the last application name from the previous response.
---
---
--- If you want detailed information about a specific application, use 'DescribeApplication' .
---
--- This operation requires permissions to perform the @kinesisanalytics:ListApplications@ action.
---
-module Network.AWS.KinesisAnalytics.ListApplications
-    (
-    -- * Creating a Request
-      listApplications
-    , ListApplications
-    -- * Request Lenses
-    , laLimit
-    , laExclusiveStartApplicationName
-
-    -- * Destructuring the Response
-    , listApplicationsResponse
-    , ListApplicationsResponse
-    -- * Response Lenses
-    , larsResponseStatus
-    , larsApplicationSummaries
-    , larsHasMoreApplications
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'listApplications' smart constructor.
-data ListApplications = ListApplications'
-  { _laLimit                         :: !(Maybe Nat)
-  , _laExclusiveStartApplicationName :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListApplications' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'laLimit' - Maximum number of applications to list.
---
--- * 'laExclusiveStartApplicationName' - Name of the application to start the list with. When using pagination to retrieve the list, you don't need to specify this parameter in the first request. However, in subsequent requests, you add the last application name from the previous response to get the next page of applications.
-listApplications
-    :: ListApplications
-listApplications =
-  ListApplications'
-    {_laLimit = Nothing, _laExclusiveStartApplicationName = Nothing}
-
-
--- | Maximum number of applications to list.
-laLimit :: Lens' ListApplications (Maybe Natural)
-laLimit = lens _laLimit (\ s a -> s{_laLimit = a}) . mapping _Nat
-
--- | Name of the application to start the list with. When using pagination to retrieve the list, you don't need to specify this parameter in the first request. However, in subsequent requests, you add the last application name from the previous response to get the next page of applications.
-laExclusiveStartApplicationName :: Lens' ListApplications (Maybe Text)
-laExclusiveStartApplicationName = lens _laExclusiveStartApplicationName (\ s a -> s{_laExclusiveStartApplicationName = a})
-
-instance AWSRequest ListApplications where
-        type Rs ListApplications = ListApplicationsResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListApplicationsResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .?> "ApplicationSummaries" .!@ mempty)
-                     <*> (x .:> "HasMoreApplications"))
-
-instance Hashable ListApplications where
-
-instance NFData ListApplications where
-
-instance ToHeaders ListApplications where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.ListApplications" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListApplications where
-        toJSON ListApplications'{..}
-          = object
-              (catMaybes
-                 [("Limit" .=) <$> _laLimit,
-                  ("ExclusiveStartApplicationName" .=) <$>
-                    _laExclusiveStartApplicationName])
-
-instance ToPath ListApplications where
-        toPath = const "/"
-
-instance ToQuery ListApplications where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'listApplicationsResponse' smart constructor.
-data ListApplicationsResponse = ListApplicationsResponse'
-  { _larsResponseStatus       :: !Int
-  , _larsApplicationSummaries :: ![ApplicationSummary]
-  , _larsHasMoreApplications  :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListApplicationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'larsResponseStatus' - -- | The response status code.
---
--- * 'larsApplicationSummaries' - List of @ApplicationSummary@ objects.
---
--- * 'larsHasMoreApplications' - Returns true if there are more applications to retrieve.
-listApplicationsResponse
-    :: Int -- ^ 'larsResponseStatus'
-    -> Bool -- ^ 'larsHasMoreApplications'
-    -> ListApplicationsResponse
-listApplicationsResponse pResponseStatus_ pHasMoreApplications_ =
-  ListApplicationsResponse'
-    { _larsResponseStatus = pResponseStatus_
-    , _larsApplicationSummaries = mempty
-    , _larsHasMoreApplications = pHasMoreApplications_
-    }
-
-
--- | -- | The response status code.
-larsResponseStatus :: Lens' ListApplicationsResponse Int
-larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a})
-
--- | List of @ApplicationSummary@ objects.
-larsApplicationSummaries :: Lens' ListApplicationsResponse [ApplicationSummary]
-larsApplicationSummaries = lens _larsApplicationSummaries (\ s a -> s{_larsApplicationSummaries = a}) . _Coerce
-
--- | Returns true if there are more applications to retrieve.
-larsHasMoreApplications :: Lens' ListApplicationsResponse Bool
-larsHasMoreApplications = lens _larsHasMoreApplications (\ s a -> s{_larsHasMoreApplications = a})
-
-instance NFData ListApplicationsResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/StartApplication.hs b/gen/Network/AWS/KinesisAnalytics/StartApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/StartApplication.hs
+++ /dev/null
@@ -1,151 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.StartApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Starts the specified Amazon Kinesis Analytics application. After creating an application, you must exclusively call this operation to start your application.
---
---
--- After the application starts, it begins consuming the input data, processes it, and writes the output to the configured destination.
---
--- The application status must be @READY@ for you to start an application. You can get the application status in the console or using the 'DescribeApplication' operation.
---
--- After you start the application, you can stop the application from processing the input by calling the 'StopApplication' operation.
---
--- This operation requires permissions to perform the @kinesisanalytics:StartApplication@ action.
---
-module Network.AWS.KinesisAnalytics.StartApplication
-    (
-    -- * Creating a Request
-      startApplication
-    , StartApplication
-    -- * Request Lenses
-    , saApplicationName
-    , saInputConfigurations
-
-    -- * Destructuring the Response
-    , startApplicationResponse
-    , StartApplicationResponse
-    -- * Response Lenses
-    , sarsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'startApplication' smart constructor.
-data StartApplication = StartApplication'
-  { _saApplicationName     :: !Text
-  , _saInputConfigurations :: ![InputConfiguration]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saApplicationName' - Name of the application.
---
--- * 'saInputConfigurations' - Identifies the specific input, by ID, that the application starts consuming. Amazon Kinesis Analytics starts reading the streaming source associated with the input. You can also specify where in the streaming source you want Amazon Kinesis Analytics to start reading.
-startApplication
-    :: Text -- ^ 'saApplicationName'
-    -> StartApplication
-startApplication pApplicationName_ =
-  StartApplication'
-    {_saApplicationName = pApplicationName_, _saInputConfigurations = mempty}
-
-
--- | Name of the application.
-saApplicationName :: Lens' StartApplication Text
-saApplicationName = lens _saApplicationName (\ s a -> s{_saApplicationName = a})
-
--- | Identifies the specific input, by ID, that the application starts consuming. Amazon Kinesis Analytics starts reading the streaming source associated with the input. You can also specify where in the streaming source you want Amazon Kinesis Analytics to start reading.
-saInputConfigurations :: Lens' StartApplication [InputConfiguration]
-saInputConfigurations = lens _saInputConfigurations (\ s a -> s{_saInputConfigurations = a}) . _Coerce
-
-instance AWSRequest StartApplication where
-        type Rs StartApplication = StartApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 StartApplicationResponse' <$> (pure (fromEnum s)))
-
-instance Hashable StartApplication where
-
-instance NFData StartApplication where
-
-instance ToHeaders StartApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.StartApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StartApplication where
-        toJSON StartApplication'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _saApplicationName),
-                  Just
-                    ("InputConfigurations" .= _saInputConfigurations)])
-
-instance ToPath StartApplication where
-        toPath = const "/"
-
-instance ToQuery StartApplication where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'startApplicationResponse' smart constructor.
-newtype StartApplicationResponse = StartApplicationResponse'
-  { _sarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sarsResponseStatus' - -- | The response status code.
-startApplicationResponse
-    :: Int -- ^ 'sarsResponseStatus'
-    -> StartApplicationResponse
-startApplicationResponse pResponseStatus_ =
-  StartApplicationResponse' {_sarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-sarsResponseStatus :: Lens' StartApplicationResponse Int
-sarsResponseStatus = lens _sarsResponseStatus (\ s a -> s{_sarsResponseStatus = a})
-
-instance NFData StartApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/StopApplication.hs b/gen/Network/AWS/KinesisAnalytics/StopApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/StopApplication.hs
+++ /dev/null
@@ -1,134 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.StopApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Stops the application from processing input data. You can stop an application only if it is in the running state. You can use the 'DescribeApplication' operation to find the application state. After the application is stopped, Amazon Kinesis Analytics stops reading data from the input, the application stops processing data, and there is no output written to the destination.
---
---
--- This operation requires permissions to perform the @kinesisanalytics:StopApplication@ action.
---
-module Network.AWS.KinesisAnalytics.StopApplication
-    (
-    -- * Creating a Request
-      stopApplication
-    , StopApplication
-    -- * Request Lenses
-    , sApplicationName
-
-    -- * Destructuring the Response
-    , stopApplicationResponse
-    , StopApplicationResponse
-    -- * Response Lenses
-    , srsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- |
---
---
---
--- /See:/ 'stopApplication' smart constructor.
-newtype StopApplication = StopApplication'
-  { _sApplicationName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sApplicationName' - Name of the running application to stop.
-stopApplication
-    :: Text -- ^ 'sApplicationName'
-    -> StopApplication
-stopApplication pApplicationName_ =
-  StopApplication' {_sApplicationName = pApplicationName_}
-
-
--- | Name of the running application to stop.
-sApplicationName :: Lens' StopApplication Text
-sApplicationName = lens _sApplicationName (\ s a -> s{_sApplicationName = a})
-
-instance AWSRequest StopApplication where
-        type Rs StopApplication = StopApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 StopApplicationResponse' <$> (pure (fromEnum s)))
-
-instance Hashable StopApplication where
-
-instance NFData StopApplication where
-
-instance ToHeaders StopApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.StopApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StopApplication where
-        toJSON StopApplication'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _sApplicationName)])
-
-instance ToPath StopApplication where
-        toPath = const "/"
-
-instance ToQuery StopApplication where
-        toQuery = const mempty
-
--- |
---
---
---
--- /See:/ 'stopApplicationResponse' smart constructor.
-newtype StopApplicationResponse = StopApplicationResponse'
-  { _srsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srsResponseStatus' - -- | The response status code.
-stopApplicationResponse
-    :: Int -- ^ 'srsResponseStatus'
-    -> StopApplicationResponse
-stopApplicationResponse pResponseStatus_ =
-  StopApplicationResponse' {_srsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-srsResponseStatus :: Lens' StopApplicationResponse Int
-srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a})
-
-instance NFData StopApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/Types.hs b/gen/Network/AWS/KinesisAnalytics/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/Types.hs
+++ /dev/null
@@ -1,524 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.KinesisAnalytics.Types
-    (
-    -- * Service Configuration
-      kinesisAnalytics
-
-    -- * Errors
-    , _InvalidApplicationConfigurationException
-    , _ResourceProvisionedThroughputExceededException
-    , _InvalidArgumentException
-    , _CodeValidationException
-    , _ConcurrentModificationException
-    , _ServiceUnavailableException
-    , _UnableToDetectSchemaException
-    , _ResourceNotFoundException
-    , _LimitExceededException
-    , _ResourceInUseException
-
-    -- * ApplicationStatus
-    , ApplicationStatus (..)
-
-    -- * InputStartingPosition
-    , InputStartingPosition (..)
-
-    -- * RecordFormatType
-    , RecordFormatType (..)
-
-    -- * ApplicationDetail
-    , ApplicationDetail
-    , applicationDetail
-    , adApplicationDescription
-    , adOutputDescriptions
-    , adCloudWatchLoggingOptionDescriptions
-    , adReferenceDataSourceDescriptions
-    , adInputDescriptions
-    , adApplicationCode
-    , adCreateTimestamp
-    , adLastUpdateTimestamp
-    , adApplicationName
-    , adApplicationARN
-    , adApplicationStatus
-    , adApplicationVersionId
-
-    -- * ApplicationSummary
-    , ApplicationSummary
-    , applicationSummary
-    , asApplicationName
-    , asApplicationARN
-    , asApplicationStatus
-
-    -- * ApplicationUpdate
-    , ApplicationUpdate
-    , applicationUpdate
-    , auReferenceDataSourceUpdates
-    , auInputUpdates
-    , auCloudWatchLoggingOptionUpdates
-    , auOutputUpdates
-    , auApplicationCodeUpdate
-
-    -- * CSVMappingParameters
-    , CSVMappingParameters
-    , csvMappingParameters
-    , cmpRecordRowDelimiter
-    , cmpRecordColumnDelimiter
-
-    -- * CloudWatchLoggingOption
-    , CloudWatchLoggingOption
-    , cloudWatchLoggingOption
-    , cwloLogStreamARN
-    , cwloRoleARN
-
-    -- * CloudWatchLoggingOptionDescription
-    , CloudWatchLoggingOptionDescription
-    , cloudWatchLoggingOptionDescription
-    , cwlodCloudWatchLoggingOptionId
-    , cwlodLogStreamARN
-    , cwlodRoleARN
-
-    -- * CloudWatchLoggingOptionUpdate
-    , CloudWatchLoggingOptionUpdate
-    , cloudWatchLoggingOptionUpdate
-    , cwlouRoleARNUpdate
-    , cwlouLogStreamARNUpdate
-    , cwlouCloudWatchLoggingOptionId
-
-    -- * DestinationSchema
-    , DestinationSchema
-    , destinationSchema
-    , dsRecordFormatType
-
-    -- * Input
-    , Input
-    , input
-    , iInputParallelism
-    , iInputProcessingConfiguration
-    , iKinesisStreamsInput
-    , iKinesisFirehoseInput
-    , iNamePrefix
-    , iInputSchema
-
-    -- * InputConfiguration
-    , InputConfiguration
-    , inputConfiguration
-    , icId
-    , icInputStartingPositionConfiguration
-
-    -- * InputDescription
-    , InputDescription
-    , inputDescription
-    , idInputStartingPositionConfiguration
-    , idInputParallelism
-    , idInputId
-    , idInAppStreamNames
-    , idKinesisFirehoseInputDescription
-    , idInputSchema
-    , idKinesisStreamsInputDescription
-    , idNamePrefix
-    , idInputProcessingConfigurationDescription
-
-    -- * InputLambdaProcessor
-    , InputLambdaProcessor
-    , inputLambdaProcessor
-    , ilpResourceARN
-    , ilpRoleARN
-
-    -- * InputLambdaProcessorDescription
-    , InputLambdaProcessorDescription
-    , inputLambdaProcessorDescription
-    , ilpdResourceARN
-    , ilpdRoleARN
-
-    -- * InputLambdaProcessorUpdate
-    , InputLambdaProcessorUpdate
-    , inputLambdaProcessorUpdate
-    , ilpuRoleARNUpdate
-    , ilpuResourceARNUpdate
-
-    -- * InputParallelism
-    , InputParallelism
-    , inputParallelism
-    , ipCount
-
-    -- * InputParallelismUpdate
-    , InputParallelismUpdate
-    , inputParallelismUpdate
-    , ipuCountUpdate
-
-    -- * InputProcessingConfiguration
-    , InputProcessingConfiguration
-    , inputProcessingConfiguration
-    , ipcInputLambdaProcessor
-
-    -- * InputProcessingConfigurationDescription
-    , InputProcessingConfigurationDescription
-    , inputProcessingConfigurationDescription
-    , ipcdInputLambdaProcessorDescription
-
-    -- * InputProcessingConfigurationUpdate
-    , InputProcessingConfigurationUpdate
-    , inputProcessingConfigurationUpdate
-    , ipcuInputLambdaProcessorUpdate
-
-    -- * InputSchemaUpdate
-    , InputSchemaUpdate
-    , inputSchemaUpdate
-    , isuRecordFormatUpdate
-    , isuRecordEncodingUpdate
-    , isuRecordColumnUpdates
-
-    -- * InputStartingPositionConfiguration
-    , InputStartingPositionConfiguration
-    , inputStartingPositionConfiguration
-    , ispcInputStartingPosition
-
-    -- * InputUpdate
-    , InputUpdate
-    , inputUpdate
-    , iuInputProcessingConfigurationUpdate
-    , iuKinesisStreamsInputUpdate
-    , iuInputParallelismUpdate
-    , iuNamePrefixUpdate
-    , iuInputSchemaUpdate
-    , iuKinesisFirehoseInputUpdate
-    , iuInputId
-
-    -- * JSONMappingParameters
-    , JSONMappingParameters
-    , jsonMappingParameters
-    , jmpRecordRowPath
-
-    -- * KinesisFirehoseInput
-    , KinesisFirehoseInput
-    , kinesisFirehoseInput
-    , kfiResourceARN
-    , kfiRoleARN
-
-    -- * KinesisFirehoseInputDescription
-    , KinesisFirehoseInputDescription
-    , kinesisFirehoseInputDescription
-    , kfidResourceARN
-    , kfidRoleARN
-
-    -- * KinesisFirehoseInputUpdate
-    , KinesisFirehoseInputUpdate
-    , kinesisFirehoseInputUpdate
-    , kfiuRoleARNUpdate
-    , kfiuResourceARNUpdate
-
-    -- * KinesisFirehoseOutput
-    , KinesisFirehoseOutput
-    , kinesisFirehoseOutput
-    , kfoResourceARN
-    , kfoRoleARN
-
-    -- * KinesisFirehoseOutputDescription
-    , KinesisFirehoseOutputDescription
-    , kinesisFirehoseOutputDescription
-    , kfodResourceARN
-    , kfodRoleARN
-
-    -- * KinesisFirehoseOutputUpdate
-    , KinesisFirehoseOutputUpdate
-    , kinesisFirehoseOutputUpdate
-    , kfouRoleARNUpdate
-    , kfouResourceARNUpdate
-
-    -- * KinesisStreamsInput
-    , KinesisStreamsInput
-    , kinesisStreamsInput
-    , ksiResourceARN
-    , ksiRoleARN
-
-    -- * KinesisStreamsInputDescription
-    , KinesisStreamsInputDescription
-    , kinesisStreamsInputDescription
-    , ksidResourceARN
-    , ksidRoleARN
-
-    -- * KinesisStreamsInputUpdate
-    , KinesisStreamsInputUpdate
-    , kinesisStreamsInputUpdate
-    , ksiuRoleARNUpdate
-    , ksiuResourceARNUpdate
-
-    -- * KinesisStreamsOutput
-    , KinesisStreamsOutput
-    , kinesisStreamsOutput
-    , ksoResourceARN
-    , ksoRoleARN
-
-    -- * KinesisStreamsOutputDescription
-    , KinesisStreamsOutputDescription
-    , kinesisStreamsOutputDescription
-    , ksodResourceARN
-    , ksodRoleARN
-
-    -- * KinesisStreamsOutputUpdate
-    , KinesisStreamsOutputUpdate
-    , kinesisStreamsOutputUpdate
-    , ksouRoleARNUpdate
-    , ksouResourceARNUpdate
-
-    -- * LambdaOutput
-    , LambdaOutput
-    , lambdaOutput
-    , loResourceARN
-    , loRoleARN
-
-    -- * LambdaOutputDescription
-    , LambdaOutputDescription
-    , lambdaOutputDescription
-    , lodResourceARN
-    , lodRoleARN
-
-    -- * LambdaOutputUpdate
-    , LambdaOutputUpdate
-    , lambdaOutputUpdate
-    , louRoleARNUpdate
-    , louResourceARNUpdate
-
-    -- * MappingParameters
-    , MappingParameters
-    , mappingParameters
-    , mpCSVMappingParameters
-    , mpJSONMappingParameters
-
-    -- * Output
-    , Output
-    , output
-    , oLambdaOutput
-    , oKinesisStreamsOutput
-    , oKinesisFirehoseOutput
-    , oName
-    , oDestinationSchema
-
-    -- * OutputDescription
-    , OutputDescription
-    , outputDescription
-    , odOutputId
-    , odDestinationSchema
-    , odKinesisFirehoseOutputDescription
-    , odKinesisStreamsOutputDescription
-    , odName
-    , odLambdaOutputDescription
-
-    -- * OutputUpdate
-    , OutputUpdate
-    , outputUpdate
-    , ouKinesisStreamsOutputUpdate
-    , ouDestinationSchemaUpdate
-    , ouKinesisFirehoseOutputUpdate
-    , ouNameUpdate
-    , ouLambdaOutputUpdate
-    , ouOutputId
-
-    -- * RecordColumn
-    , RecordColumn
-    , recordColumn
-    , rcMapping
-    , rcName
-    , rcSqlType
-
-    -- * RecordFormat
-    , RecordFormat
-    , recordFormat
-    , rfMappingParameters
-    , rfRecordFormatType
-
-    -- * ReferenceDataSource
-    , ReferenceDataSource
-    , referenceDataSource
-    , rdsS3ReferenceDataSource
-    , rdsTableName
-    , rdsReferenceSchema
-
-    -- * ReferenceDataSourceDescription
-    , ReferenceDataSourceDescription
-    , referenceDataSourceDescription
-    , rdsdReferenceSchema
-    , rdsdReferenceId
-    , rdsdTableName
-    , rdsdS3ReferenceDataSourceDescription
-
-    -- * ReferenceDataSourceUpdate
-    , ReferenceDataSourceUpdate
-    , referenceDataSourceUpdate
-    , rdsuTableNameUpdate
-    , rdsuS3ReferenceDataSourceUpdate
-    , rdsuReferenceSchemaUpdate
-    , rdsuReferenceId
-
-    -- * S3Configuration
-    , S3Configuration
-    , s3Configuration
-    , scRoleARN
-    , scBucketARN
-    , scFileKey
-
-    -- * S3ReferenceDataSource
-    , S3ReferenceDataSource
-    , s3ReferenceDataSource
-    , srdsBucketARN
-    , srdsFileKey
-    , srdsReferenceRoleARN
-
-    -- * S3ReferenceDataSourceDescription
-    , S3ReferenceDataSourceDescription
-    , s3ReferenceDataSourceDescription
-    , srdsdBucketARN
-    , srdsdFileKey
-    , srdsdReferenceRoleARN
-
-    -- * S3ReferenceDataSourceUpdate
-    , S3ReferenceDataSourceUpdate
-    , s3ReferenceDataSourceUpdate
-    , srdsuBucketARNUpdate
-    , srdsuFileKeyUpdate
-    , srdsuReferenceRoleARNUpdate
-
-    -- * SourceSchema
-    , SourceSchema
-    , sourceSchema
-    , ssRecordEncoding
-    , ssRecordFormat
-    , ssRecordColumns
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.KinesisAnalytics.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2015-08-14@ of the Amazon Kinesis Analytics SDK configuration.
-kinesisAnalytics :: Service
-kinesisAnalytics =
-  Service
-    { _svcAbbrev = "KinesisAnalytics"
-    , _svcSigner = v4
-    , _svcPrefix = "kinesisanalytics"
-    , _svcVersion = "2015-08-14"
-    , _svcEndpoint = defaultEndpoint kinesisAnalytics
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "KinesisAnalytics"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | User-provided application configuration is not valid.
---
---
-_InvalidApplicationConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidApplicationConfigurationException =
-  _MatchServiceError kinesisAnalytics "InvalidApplicationConfigurationException"
-
-
--- | Discovery failed to get a record from the streaming source because of the Amazon Kinesis Streams ProvisionedThroughputExceededException. For more information, see <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html GetRecords> in the Amazon Kinesis Streams API Reference.
---
---
-_ResourceProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceProvisionedThroughputExceededException =
-  _MatchServiceError
-    kinesisAnalytics
-    "ResourceProvisionedThroughputExceededException"
-
-
--- | Specified input parameter value is invalid.
---
---
-_InvalidArgumentException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidArgumentException =
-  _MatchServiceError kinesisAnalytics "InvalidArgumentException"
-
-
--- | User-provided application code (query) is invalid. This can be a simple syntax error.
---
---
-_CodeValidationException :: AsError a => Getting (First ServiceError) a ServiceError
-_CodeValidationException =
-  _MatchServiceError kinesisAnalytics "CodeValidationException"
-
-
--- | Exception thrown as a result of concurrent modification to an application. For example, two individuals attempting to edit the same application at the same time.
---
---
-_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConcurrentModificationException =
-  _MatchServiceError kinesisAnalytics "ConcurrentModificationException"
-
-
--- | The service is unavailable, back off and retry the operation.
---
---
-_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServiceUnavailableException =
-  _MatchServiceError kinesisAnalytics "ServiceUnavailableException"
-
-
--- | Data format is not valid, Amazon Kinesis Analytics is not able to detect schema for the given streaming source.
---
---
-_UnableToDetectSchemaException :: AsError a => Getting (First ServiceError) a ServiceError
-_UnableToDetectSchemaException =
-  _MatchServiceError kinesisAnalytics "UnableToDetectSchemaException"
-
-
--- | Specified application can't be found.
---
---
-_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceNotFoundException =
-  _MatchServiceError kinesisAnalytics "ResourceNotFoundException"
-
-
--- | Exceeded the number of applications allowed.
---
---
-_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException =
-  _MatchServiceError kinesisAnalytics "LimitExceededException"
-
-
--- | Application is not available for this operation.
---
---
-_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceInUseException =
-  _MatchServiceError kinesisAnalytics "ResourceInUseException"
-
diff --git a/gen/Network/AWS/KinesisAnalytics/Types/Product.hs b/gen/Network/AWS/KinesisAnalytics/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/Types/Product.hs
+++ /dev/null
@@ -1,2978 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.KinesisAnalytics.Types.Product where
-
-import Network.AWS.KinesisAnalytics.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-
--- | Provides a description of the application, including the application Amazon Resource Name (ARN), status, latest version, and input and output configuration.
---
---
---
--- /See:/ 'applicationDetail' smart constructor.
-data ApplicationDetail = ApplicationDetail'
-  { _adApplicationDescription :: !(Maybe Text)
-  , _adOutputDescriptions :: !(Maybe [OutputDescription])
-  , _adCloudWatchLoggingOptionDescriptions :: !(Maybe [CloudWatchLoggingOptionDescription])
-  , _adReferenceDataSourceDescriptions :: !(Maybe [ReferenceDataSourceDescription])
-  , _adInputDescriptions :: !(Maybe [InputDescription])
-  , _adApplicationCode :: !(Maybe Text)
-  , _adCreateTimestamp :: !(Maybe POSIX)
-  , _adLastUpdateTimestamp :: !(Maybe POSIX)
-  , _adApplicationName :: !Text
-  , _adApplicationARN :: !Text
-  , _adApplicationStatus :: !ApplicationStatus
-  , _adApplicationVersionId :: !Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ApplicationDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adApplicationDescription' - Description of the application.
---
--- * 'adOutputDescriptions' - Describes the application output configuration. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
---
--- * 'adCloudWatchLoggingOptionDescriptions' - Describes the CloudWatch log streams that are configured to receive application messages. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
---
--- * 'adReferenceDataSourceDescriptions' - Describes reference data sources configured for the application. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
--- * 'adInputDescriptions' - Describes the application input configuration. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
--- * 'adApplicationCode' - Returns the application code that you provided to perform data analysis on any of the in-application streams in your application.
---
--- * 'adCreateTimestamp' - Time stamp when the application version was created.
---
--- * 'adLastUpdateTimestamp' - Time stamp when the application was last updated.
---
--- * 'adApplicationName' - Name of the application.
---
--- * 'adApplicationARN' - ARN of the application.
---
--- * 'adApplicationStatus' - Status of the application.
---
--- * 'adApplicationVersionId' - Provides the current application version.
-applicationDetail
-    :: Text -- ^ 'adApplicationName'
-    -> Text -- ^ 'adApplicationARN'
-    -> ApplicationStatus -- ^ 'adApplicationStatus'
-    -> Natural -- ^ 'adApplicationVersionId'
-    -> ApplicationDetail
-applicationDetail pApplicationName_ pApplicationARN_ pApplicationStatus_ pApplicationVersionId_ =
-  ApplicationDetail'
-    { _adApplicationDescription = Nothing
-    , _adOutputDescriptions = Nothing
-    , _adCloudWatchLoggingOptionDescriptions = Nothing
-    , _adReferenceDataSourceDescriptions = Nothing
-    , _adInputDescriptions = Nothing
-    , _adApplicationCode = Nothing
-    , _adCreateTimestamp = Nothing
-    , _adLastUpdateTimestamp = Nothing
-    , _adApplicationName = pApplicationName_
-    , _adApplicationARN = pApplicationARN_
-    , _adApplicationStatus = pApplicationStatus_
-    , _adApplicationVersionId = _Nat # pApplicationVersionId_
-    }
-
-
--- | Description of the application.
-adApplicationDescription :: Lens' ApplicationDetail (Maybe Text)
-adApplicationDescription = lens _adApplicationDescription (\ s a -> s{_adApplicationDescription = a})
-
--- | Describes the application output configuration. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
-adOutputDescriptions :: Lens' ApplicationDetail [OutputDescription]
-adOutputDescriptions = lens _adOutputDescriptions (\ s a -> s{_adOutputDescriptions = a}) . _Default . _Coerce
-
--- | Describes the CloudWatch log streams that are configured to receive application messages. For more information about using CloudWatch log streams with Amazon Kinesis Analytics applications, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html Working with Amazon CloudWatch Logs> .
-adCloudWatchLoggingOptionDescriptions :: Lens' ApplicationDetail [CloudWatchLoggingOptionDescription]
-adCloudWatchLoggingOptionDescriptions = lens _adCloudWatchLoggingOptionDescriptions (\ s a -> s{_adCloudWatchLoggingOptionDescriptions = a}) . _Default . _Coerce
-
--- | Describes reference data sources configured for the application. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
-adReferenceDataSourceDescriptions :: Lens' ApplicationDetail [ReferenceDataSourceDescription]
-adReferenceDataSourceDescriptions = lens _adReferenceDataSourceDescriptions (\ s a -> s{_adReferenceDataSourceDescriptions = a}) . _Default . _Coerce
-
--- | Describes the application input configuration. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
-adInputDescriptions :: Lens' ApplicationDetail [InputDescription]
-adInputDescriptions = lens _adInputDescriptions (\ s a -> s{_adInputDescriptions = a}) . _Default . _Coerce
-
--- | Returns the application code that you provided to perform data analysis on any of the in-application streams in your application.
-adApplicationCode :: Lens' ApplicationDetail (Maybe Text)
-adApplicationCode = lens _adApplicationCode (\ s a -> s{_adApplicationCode = a})
-
--- | Time stamp when the application version was created.
-adCreateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)
-adCreateTimestamp = lens _adCreateTimestamp (\ s a -> s{_adCreateTimestamp = a}) . mapping _Time
-
--- | Time stamp when the application was last updated.
-adLastUpdateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)
-adLastUpdateTimestamp = lens _adLastUpdateTimestamp (\ s a -> s{_adLastUpdateTimestamp = a}) . mapping _Time
-
--- | Name of the application.
-adApplicationName :: Lens' ApplicationDetail Text
-adApplicationName = lens _adApplicationName (\ s a -> s{_adApplicationName = a})
-
--- | ARN of the application.
-adApplicationARN :: Lens' ApplicationDetail Text
-adApplicationARN = lens _adApplicationARN (\ s a -> s{_adApplicationARN = a})
-
--- | Status of the application.
-adApplicationStatus :: Lens' ApplicationDetail ApplicationStatus
-adApplicationStatus = lens _adApplicationStatus (\ s a -> s{_adApplicationStatus = a})
-
--- | Provides the current application version.
-adApplicationVersionId :: Lens' ApplicationDetail Natural
-adApplicationVersionId = lens _adApplicationVersionId (\ s a -> s{_adApplicationVersionId = a}) . _Nat
-
-instance FromJSON ApplicationDetail where
-        parseJSON
-          = withObject "ApplicationDetail"
-              (\ x ->
-                 ApplicationDetail' <$>
-                   (x .:? "ApplicationDescription") <*>
-                     (x .:? "OutputDescriptions" .!= mempty)
-                     <*>
-                     (x .:? "CloudWatchLoggingOptionDescriptions" .!=
-                        mempty)
-                     <*>
-                     (x .:? "ReferenceDataSourceDescriptions" .!= mempty)
-                     <*> (x .:? "InputDescriptions" .!= mempty)
-                     <*> (x .:? "ApplicationCode")
-                     <*> (x .:? "CreateTimestamp")
-                     <*> (x .:? "LastUpdateTimestamp")
-                     <*> (x .: "ApplicationName")
-                     <*> (x .: "ApplicationARN")
-                     <*> (x .: "ApplicationStatus")
-                     <*> (x .: "ApplicationVersionId"))
-
-instance Hashable ApplicationDetail where
-
-instance NFData ApplicationDetail where
-
--- | Provides application summary information, including the application Amazon Resource Name (ARN), name, and status.
---
---
---
--- /See:/ 'applicationSummary' smart constructor.
-data ApplicationSummary = ApplicationSummary'
-  { _asApplicationName   :: !Text
-  , _asApplicationARN    :: !Text
-  , _asApplicationStatus :: !ApplicationStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ApplicationSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asApplicationName' - Name of the application.
---
--- * 'asApplicationARN' - ARN of the application.
---
--- * 'asApplicationStatus' - Status of the application.
-applicationSummary
-    :: Text -- ^ 'asApplicationName'
-    -> Text -- ^ 'asApplicationARN'
-    -> ApplicationStatus -- ^ 'asApplicationStatus'
-    -> ApplicationSummary
-applicationSummary pApplicationName_ pApplicationARN_ pApplicationStatus_ =
-  ApplicationSummary'
-    { _asApplicationName = pApplicationName_
-    , _asApplicationARN = pApplicationARN_
-    , _asApplicationStatus = pApplicationStatus_
-    }
-
-
--- | Name of the application.
-asApplicationName :: Lens' ApplicationSummary Text
-asApplicationName = lens _asApplicationName (\ s a -> s{_asApplicationName = a})
-
--- | ARN of the application.
-asApplicationARN :: Lens' ApplicationSummary Text
-asApplicationARN = lens _asApplicationARN (\ s a -> s{_asApplicationARN = a})
-
--- | Status of the application.
-asApplicationStatus :: Lens' ApplicationSummary ApplicationStatus
-asApplicationStatus = lens _asApplicationStatus (\ s a -> s{_asApplicationStatus = a})
-
-instance FromJSON ApplicationSummary where
-        parseJSON
-          = withObject "ApplicationSummary"
-              (\ x ->
-                 ApplicationSummary' <$>
-                   (x .: "ApplicationName") <*> (x .: "ApplicationARN")
-                     <*> (x .: "ApplicationStatus"))
-
-instance Hashable ApplicationSummary where
-
-instance NFData ApplicationSummary where
-
--- | Describes updates to apply to an existing Amazon Kinesis Analytics application.
---
---
---
--- /See:/ 'applicationUpdate' smart constructor.
-data ApplicationUpdate = ApplicationUpdate'
-  { _auReferenceDataSourceUpdates :: !(Maybe [ReferenceDataSourceUpdate])
-  , _auInputUpdates :: !(Maybe [InputUpdate])
-  , _auCloudWatchLoggingOptionUpdates :: !(Maybe [CloudWatchLoggingOptionUpdate])
-  , _auOutputUpdates :: !(Maybe [OutputUpdate])
-  , _auApplicationCodeUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ApplicationUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'auReferenceDataSourceUpdates' - Describes application reference data source updates.
---
--- * 'auInputUpdates' - Describes application input configuration updates.
---
--- * 'auCloudWatchLoggingOptionUpdates' - Describes application CloudWatch logging option updates.
---
--- * 'auOutputUpdates' - Describes application output configuration updates.
---
--- * 'auApplicationCodeUpdate' - Describes application code updates.
-applicationUpdate
-    :: ApplicationUpdate
-applicationUpdate =
-  ApplicationUpdate'
-    { _auReferenceDataSourceUpdates = Nothing
-    , _auInputUpdates = Nothing
-    , _auCloudWatchLoggingOptionUpdates = Nothing
-    , _auOutputUpdates = Nothing
-    , _auApplicationCodeUpdate = Nothing
-    }
-
-
--- | Describes application reference data source updates.
-auReferenceDataSourceUpdates :: Lens' ApplicationUpdate [ReferenceDataSourceUpdate]
-auReferenceDataSourceUpdates = lens _auReferenceDataSourceUpdates (\ s a -> s{_auReferenceDataSourceUpdates = a}) . _Default . _Coerce
-
--- | Describes application input configuration updates.
-auInputUpdates :: Lens' ApplicationUpdate [InputUpdate]
-auInputUpdates = lens _auInputUpdates (\ s a -> s{_auInputUpdates = a}) . _Default . _Coerce
-
--- | Describes application CloudWatch logging option updates.
-auCloudWatchLoggingOptionUpdates :: Lens' ApplicationUpdate [CloudWatchLoggingOptionUpdate]
-auCloudWatchLoggingOptionUpdates = lens _auCloudWatchLoggingOptionUpdates (\ s a -> s{_auCloudWatchLoggingOptionUpdates = a}) . _Default . _Coerce
-
--- | Describes application output configuration updates.
-auOutputUpdates :: Lens' ApplicationUpdate [OutputUpdate]
-auOutputUpdates = lens _auOutputUpdates (\ s a -> s{_auOutputUpdates = a}) . _Default . _Coerce
-
--- | Describes application code updates.
-auApplicationCodeUpdate :: Lens' ApplicationUpdate (Maybe Text)
-auApplicationCodeUpdate = lens _auApplicationCodeUpdate (\ s a -> s{_auApplicationCodeUpdate = a})
-
-instance Hashable ApplicationUpdate where
-
-instance NFData ApplicationUpdate where
-
-instance ToJSON ApplicationUpdate where
-        toJSON ApplicationUpdate'{..}
-          = object
-              (catMaybes
-                 [("ReferenceDataSourceUpdates" .=) <$>
-                    _auReferenceDataSourceUpdates,
-                  ("InputUpdates" .=) <$> _auInputUpdates,
-                  ("CloudWatchLoggingOptionUpdates" .=) <$>
-                    _auCloudWatchLoggingOptionUpdates,
-                  ("OutputUpdates" .=) <$> _auOutputUpdates,
-                  ("ApplicationCodeUpdate" .=) <$>
-                    _auApplicationCodeUpdate])
-
--- | Provides additional mapping information when the record format uses delimiters, such as CSV. For example, the following sample records use CSV format, where the records use the /'\n'/ as the row delimiter and a comma (",") as the column delimiter:
---
---
--- @"name1", "address1" @
---
--- @"name2, "address2"@
---
---
--- /See:/ 'csvMappingParameters' smart constructor.
-data CSVMappingParameters = CSVMappingParameters'
-  { _cmpRecordRowDelimiter    :: !Text
-  , _cmpRecordColumnDelimiter :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CSVMappingParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmpRecordRowDelimiter' - Row delimiter. For example, in a CSV format, /'\n'/ is the typical row delimiter.
---
--- * 'cmpRecordColumnDelimiter' - Column delimiter. For example, in a CSV format, a comma (",") is the typical column delimiter.
-csvMappingParameters
-    :: Text -- ^ 'cmpRecordRowDelimiter'
-    -> Text -- ^ 'cmpRecordColumnDelimiter'
-    -> CSVMappingParameters
-csvMappingParameters pRecordRowDelimiter_ pRecordColumnDelimiter_ =
-  CSVMappingParameters'
-    { _cmpRecordRowDelimiter = pRecordRowDelimiter_
-    , _cmpRecordColumnDelimiter = pRecordColumnDelimiter_
-    }
-
-
--- | Row delimiter. For example, in a CSV format, /'\n'/ is the typical row delimiter.
-cmpRecordRowDelimiter :: Lens' CSVMappingParameters Text
-cmpRecordRowDelimiter = lens _cmpRecordRowDelimiter (\ s a -> s{_cmpRecordRowDelimiter = a})
-
--- | Column delimiter. For example, in a CSV format, a comma (",") is the typical column delimiter.
-cmpRecordColumnDelimiter :: Lens' CSVMappingParameters Text
-cmpRecordColumnDelimiter = lens _cmpRecordColumnDelimiter (\ s a -> s{_cmpRecordColumnDelimiter = a})
-
-instance FromJSON CSVMappingParameters where
-        parseJSON
-          = withObject "CSVMappingParameters"
-              (\ x ->
-                 CSVMappingParameters' <$>
-                   (x .: "RecordRowDelimiter") <*>
-                     (x .: "RecordColumnDelimiter"))
-
-instance Hashable CSVMappingParameters where
-
-instance NFData CSVMappingParameters where
-
-instance ToJSON CSVMappingParameters where
-        toJSON CSVMappingParameters'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("RecordRowDelimiter" .= _cmpRecordRowDelimiter),
-                  Just
-                    ("RecordColumnDelimiter" .=
-                       _cmpRecordColumnDelimiter)])
-
--- | Provides a description of CloudWatch logging options, including the log stream Amazon Resource Name (ARN) and the role ARN.
---
---
---
--- /See:/ 'cloudWatchLoggingOption' smart constructor.
-data CloudWatchLoggingOption = CloudWatchLoggingOption'
-  { _cwloLogStreamARN :: !Text
-  , _cwloRoleARN      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CloudWatchLoggingOption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cwloLogStreamARN' - ARN of the CloudWatch log to receive application messages.
---
--- * 'cwloRoleARN' - IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role that is used must have the @PutLogEvents@ policy action enabled.
-cloudWatchLoggingOption
-    :: Text -- ^ 'cwloLogStreamARN'
-    -> Text -- ^ 'cwloRoleARN'
-    -> CloudWatchLoggingOption
-cloudWatchLoggingOption pLogStreamARN_ pRoleARN_ =
-  CloudWatchLoggingOption'
-    {_cwloLogStreamARN = pLogStreamARN_, _cwloRoleARN = pRoleARN_}
-
-
--- | ARN of the CloudWatch log to receive application messages.
-cwloLogStreamARN :: Lens' CloudWatchLoggingOption Text
-cwloLogStreamARN = lens _cwloLogStreamARN (\ s a -> s{_cwloLogStreamARN = a})
-
--- | IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role that is used must have the @PutLogEvents@ policy action enabled.
-cwloRoleARN :: Lens' CloudWatchLoggingOption Text
-cwloRoleARN = lens _cwloRoleARN (\ s a -> s{_cwloRoleARN = a})
-
-instance Hashable CloudWatchLoggingOption where
-
-instance NFData CloudWatchLoggingOption where
-
-instance ToJSON CloudWatchLoggingOption where
-        toJSON CloudWatchLoggingOption'{..}
-          = object
-              (catMaybes
-                 [Just ("LogStreamARN" .= _cwloLogStreamARN),
-                  Just ("RoleARN" .= _cwloRoleARN)])
-
--- | Description of the CloudWatch logging option.
---
---
---
--- /See:/ 'cloudWatchLoggingOptionDescription' smart constructor.
-data CloudWatchLoggingOptionDescription = CloudWatchLoggingOptionDescription'
-  { _cwlodCloudWatchLoggingOptionId :: !(Maybe Text)
-  , _cwlodLogStreamARN              :: !Text
-  , _cwlodRoleARN                   :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CloudWatchLoggingOptionDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cwlodCloudWatchLoggingOptionId' - ID of the CloudWatch logging option description.
---
--- * 'cwlodLogStreamARN' - ARN of the CloudWatch log to receive application messages.
---
--- * 'cwlodRoleARN' - IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the @PutLogEvents@ policy action enabled.
-cloudWatchLoggingOptionDescription
-    :: Text -- ^ 'cwlodLogStreamARN'
-    -> Text -- ^ 'cwlodRoleARN'
-    -> CloudWatchLoggingOptionDescription
-cloudWatchLoggingOptionDescription pLogStreamARN_ pRoleARN_ =
-  CloudWatchLoggingOptionDescription'
-    { _cwlodCloudWatchLoggingOptionId = Nothing
-    , _cwlodLogStreamARN = pLogStreamARN_
-    , _cwlodRoleARN = pRoleARN_
-    }
-
-
--- | ID of the CloudWatch logging option description.
-cwlodCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionDescription (Maybe Text)
-cwlodCloudWatchLoggingOptionId = lens _cwlodCloudWatchLoggingOptionId (\ s a -> s{_cwlodCloudWatchLoggingOptionId = a})
-
--- | ARN of the CloudWatch log to receive application messages.
-cwlodLogStreamARN :: Lens' CloudWatchLoggingOptionDescription Text
-cwlodLogStreamARN = lens _cwlodLogStreamARN (\ s a -> s{_cwlodLogStreamARN = a})
-
--- | IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the @PutLogEvents@ policy action enabled.
-cwlodRoleARN :: Lens' CloudWatchLoggingOptionDescription Text
-cwlodRoleARN = lens _cwlodRoleARN (\ s a -> s{_cwlodRoleARN = a})
-
-instance FromJSON CloudWatchLoggingOptionDescription
-         where
-        parseJSON
-          = withObject "CloudWatchLoggingOptionDescription"
-              (\ x ->
-                 CloudWatchLoggingOptionDescription' <$>
-                   (x .:? "CloudWatchLoggingOptionId") <*>
-                     (x .: "LogStreamARN")
-                     <*> (x .: "RoleARN"))
-
-instance Hashable CloudWatchLoggingOptionDescription
-         where
-
-instance NFData CloudWatchLoggingOptionDescription
-         where
-
--- | Describes CloudWatch logging option updates.
---
---
---
--- /See:/ 'cloudWatchLoggingOptionUpdate' smart constructor.
-data CloudWatchLoggingOptionUpdate = CloudWatchLoggingOptionUpdate'
-  { _cwlouRoleARNUpdate             :: !(Maybe Text)
-  , _cwlouLogStreamARNUpdate        :: !(Maybe Text)
-  , _cwlouCloudWatchLoggingOptionId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CloudWatchLoggingOptionUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cwlouRoleARNUpdate' - IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the @PutLogEvents@ policy action enabled.
---
--- * 'cwlouLogStreamARNUpdate' - ARN of the CloudWatch log to receive application messages.
---
--- * 'cwlouCloudWatchLoggingOptionId' - ID of the CloudWatch logging option to update
-cloudWatchLoggingOptionUpdate
-    :: Text -- ^ 'cwlouCloudWatchLoggingOptionId'
-    -> CloudWatchLoggingOptionUpdate
-cloudWatchLoggingOptionUpdate pCloudWatchLoggingOptionId_ =
-  CloudWatchLoggingOptionUpdate'
-    { _cwlouRoleARNUpdate = Nothing
-    , _cwlouLogStreamARNUpdate = Nothing
-    , _cwlouCloudWatchLoggingOptionId = pCloudWatchLoggingOptionId_
-    }
-
-
--- | IAM ARN of the role to use to send application messages. Note: To write application messages to CloudWatch, the IAM role used must have the @PutLogEvents@ policy action enabled.
-cwlouRoleARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)
-cwlouRoleARNUpdate = lens _cwlouRoleARNUpdate (\ s a -> s{_cwlouRoleARNUpdate = a})
-
--- | ARN of the CloudWatch log to receive application messages.
-cwlouLogStreamARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)
-cwlouLogStreamARNUpdate = lens _cwlouLogStreamARNUpdate (\ s a -> s{_cwlouLogStreamARNUpdate = a})
-
--- | ID of the CloudWatch logging option to update
-cwlouCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionUpdate Text
-cwlouCloudWatchLoggingOptionId = lens _cwlouCloudWatchLoggingOptionId (\ s a -> s{_cwlouCloudWatchLoggingOptionId = a})
-
-instance Hashable CloudWatchLoggingOptionUpdate where
-
-instance NFData CloudWatchLoggingOptionUpdate where
-
-instance ToJSON CloudWatchLoggingOptionUpdate where
-        toJSON CloudWatchLoggingOptionUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _cwlouRoleARNUpdate,
-                  ("LogStreamARNUpdate" .=) <$>
-                    _cwlouLogStreamARNUpdate,
-                  Just
-                    ("CloudWatchLoggingOptionId" .=
-                       _cwlouCloudWatchLoggingOptionId)])
-
--- | Describes the data format when records are written to the destination. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
---
---
---
--- /See:/ 'destinationSchema' smart constructor.
-newtype DestinationSchema = DestinationSchema'
-  { _dsRecordFormatType :: Maybe RecordFormatType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DestinationSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsRecordFormatType' - Specifies the format of the records on the output stream.
-destinationSchema
-    :: DestinationSchema
-destinationSchema = DestinationSchema' {_dsRecordFormatType = Nothing}
-
-
--- | Specifies the format of the records on the output stream.
-dsRecordFormatType :: Lens' DestinationSchema (Maybe RecordFormatType)
-dsRecordFormatType = lens _dsRecordFormatType (\ s a -> s{_dsRecordFormatType = a})
-
-instance FromJSON DestinationSchema where
-        parseJSON
-          = withObject "DestinationSchema"
-              (\ x ->
-                 DestinationSchema' <$> (x .:? "RecordFormatType"))
-
-instance Hashable DestinationSchema where
-
-instance NFData DestinationSchema where
-
-instance ToJSON DestinationSchema where
-        toJSON DestinationSchema'{..}
-          = object
-              (catMaybes
-                 [("RecordFormatType" .=) <$> _dsRecordFormatType])
-
--- | When you configure the application input, you specify the streaming source, the in-application stream name that is created, and the mapping between the two. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
---
---
--- /See:/ 'input' smart constructor.
-data Input = Input'
-  { _iInputParallelism             :: !(Maybe InputParallelism)
-  , _iInputProcessingConfiguration :: !(Maybe InputProcessingConfiguration)
-  , _iKinesisStreamsInput          :: !(Maybe KinesisStreamsInput)
-  , _iKinesisFirehoseInput         :: !(Maybe KinesisFirehoseInput)
-  , _iNamePrefix                   :: !Text
-  , _iInputSchema                  :: !SourceSchema
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Input' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iInputParallelism' - Describes the number of in-application streams to create.  Data from your source is routed to these in-application input streams. (see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
--- * 'iInputProcessingConfiguration' - The 'InputProcessingConfiguration' for the input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is 'InputLambdaProcessor' .
---
--- * 'iKinesisStreamsInput' - If the streaming source is an Amazon Kinesis stream, identifies the stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is required.
---
--- * 'iKinesisFirehoseInput' - If the streaming source is an Amazon Kinesis Firehose delivery stream, identifies the delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is required.
---
--- * 'iNamePrefix' - Name prefix to use when creating an in-application stream. Suppose that you specify a prefix "MyInApplicationStream." Amazon Kinesis Analytics then creates one or more (as per the @InputParallelism@ count you specified) in-application streams with names "MyInApplicationStream_001," "MyInApplicationStream_002," and so on.
---
--- * 'iInputSchema' - Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created. Also used to describe the format of the reference data source.
-input
-    :: Text -- ^ 'iNamePrefix'
-    -> SourceSchema -- ^ 'iInputSchema'
-    -> Input
-input pNamePrefix_ pInputSchema_ =
-  Input'
-    { _iInputParallelism = Nothing
-    , _iInputProcessingConfiguration = Nothing
-    , _iKinesisStreamsInput = Nothing
-    , _iKinesisFirehoseInput = Nothing
-    , _iNamePrefix = pNamePrefix_
-    , _iInputSchema = pInputSchema_
-    }
-
-
--- | Describes the number of in-application streams to create.  Data from your source is routed to these in-application input streams. (see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
-iInputParallelism :: Lens' Input (Maybe InputParallelism)
-iInputParallelism = lens _iInputParallelism (\ s a -> s{_iInputParallelism = a})
-
--- | The 'InputProcessingConfiguration' for the input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is 'InputLambdaProcessor' .
-iInputProcessingConfiguration :: Lens' Input (Maybe InputProcessingConfiguration)
-iInputProcessingConfiguration = lens _iInputProcessingConfiguration (\ s a -> s{_iInputProcessingConfiguration = a})
-
--- | If the streaming source is an Amazon Kinesis stream, identifies the stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is required.
-iKinesisStreamsInput :: Lens' Input (Maybe KinesisStreamsInput)
-iKinesisStreamsInput = lens _iKinesisStreamsInput (\ s a -> s{_iKinesisStreamsInput = a})
-
--- | If the streaming source is an Amazon Kinesis Firehose delivery stream, identifies the delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf. Note: Either @KinesisStreamsInput@ or @KinesisFirehoseInput@ is required.
-iKinesisFirehoseInput :: Lens' Input (Maybe KinesisFirehoseInput)
-iKinesisFirehoseInput = lens _iKinesisFirehoseInput (\ s a -> s{_iKinesisFirehoseInput = a})
-
--- | Name prefix to use when creating an in-application stream. Suppose that you specify a prefix "MyInApplicationStream." Amazon Kinesis Analytics then creates one or more (as per the @InputParallelism@ count you specified) in-application streams with names "MyInApplicationStream_001," "MyInApplicationStream_002," and so on.
-iNamePrefix :: Lens' Input Text
-iNamePrefix = lens _iNamePrefix (\ s a -> s{_iNamePrefix = a})
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created. Also used to describe the format of the reference data source.
-iInputSchema :: Lens' Input SourceSchema
-iInputSchema = lens _iInputSchema (\ s a -> s{_iInputSchema = a})
-
-instance Hashable Input where
-
-instance NFData Input where
-
-instance ToJSON Input where
-        toJSON Input'{..}
-          = object
-              (catMaybes
-                 [("InputParallelism" .=) <$> _iInputParallelism,
-                  ("InputProcessingConfiguration" .=) <$>
-                    _iInputProcessingConfiguration,
-                  ("KinesisStreamsInput" .=) <$> _iKinesisStreamsInput,
-                  ("KinesisFirehoseInput" .=) <$>
-                    _iKinesisFirehoseInput,
-                  Just ("NamePrefix" .= _iNamePrefix),
-                  Just ("InputSchema" .= _iInputSchema)])
-
--- | When you start your application, you provide this configuration, which identifies the input source and the point in the input source at which you want the application to start processing records.
---
---
---
--- /See:/ 'inputConfiguration' smart constructor.
-data InputConfiguration = InputConfiguration'
-  { _icId                                 :: !Text
-  , _icInputStartingPositionConfiguration :: !InputStartingPositionConfiguration
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'icId' - Input source ID. You can get this ID by calling the 'DescribeApplication' operation.
---
--- * 'icInputStartingPositionConfiguration' - Point at which you want the application to start processing records from the streaming source.
-inputConfiguration
-    :: Text -- ^ 'icId'
-    -> InputStartingPositionConfiguration -- ^ 'icInputStartingPositionConfiguration'
-    -> InputConfiguration
-inputConfiguration pId_ pInputStartingPositionConfiguration_ =
-  InputConfiguration'
-    { _icId = pId_
-    , _icInputStartingPositionConfiguration =
-        pInputStartingPositionConfiguration_
-    }
-
-
--- | Input source ID. You can get this ID by calling the 'DescribeApplication' operation.
-icId :: Lens' InputConfiguration Text
-icId = lens _icId (\ s a -> s{_icId = a})
-
--- | Point at which you want the application to start processing records from the streaming source.
-icInputStartingPositionConfiguration :: Lens' InputConfiguration InputStartingPositionConfiguration
-icInputStartingPositionConfiguration = lens _icInputStartingPositionConfiguration (\ s a -> s{_icInputStartingPositionConfiguration = a})
-
-instance Hashable InputConfiguration where
-
-instance NFData InputConfiguration where
-
-instance ToJSON InputConfiguration where
-        toJSON InputConfiguration'{..}
-          = object
-              (catMaybes
-                 [Just ("Id" .= _icId),
-                  Just
-                    ("InputStartingPositionConfiguration" .=
-                       _icInputStartingPositionConfiguration)])
-
--- | Describes the application input configuration. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
---
---
--- /See:/ 'inputDescription' smart constructor.
-data InputDescription = InputDescription'
-  { _idInputStartingPositionConfiguration :: !(Maybe InputStartingPositionConfiguration)
-  , _idInputParallelism :: !(Maybe InputParallelism)
-  , _idInputId :: !(Maybe Text)
-  , _idInAppStreamNames :: !(Maybe [Text])
-  , _idKinesisFirehoseInputDescription :: !(Maybe KinesisFirehoseInputDescription)
-  , _idInputSchema :: !(Maybe SourceSchema)
-  , _idKinesisStreamsInputDescription :: !(Maybe KinesisStreamsInputDescription)
-  , _idNamePrefix :: !(Maybe Text)
-  , _idInputProcessingConfigurationDescription :: !(Maybe InputProcessingConfigurationDescription)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idInputStartingPositionConfiguration' - Point at which the application is configured to read from the input stream.
---
--- * 'idInputParallelism' - Describes the configured parallelism (number of in-application streams mapped to the streaming source).
---
--- * 'idInputId' - Input ID associated with the application input. This is the ID that Amazon Kinesis Analytics assigns to each input configuration you add to your application.
---
--- * 'idInAppStreamNames' - Returns the in-application stream names that are mapped to the stream source.
---
--- * 'idKinesisFirehoseInputDescription' - If an Amazon Kinesis Firehose delivery stream is configured as a streaming source, provides the delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.
---
--- * 'idInputSchema' - Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created.
---
--- * 'idKinesisStreamsInputDescription' - If an Amazon Kinesis stream is configured as streaming source, provides Amazon Kinesis stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.
---
--- * 'idNamePrefix' - In-application name prefix.
---
--- * 'idInputProcessingConfigurationDescription' - The description of the preprocessor that executes on records in this input before the application's code is run.
-inputDescription
-    :: InputDescription
-inputDescription =
-  InputDescription'
-    { _idInputStartingPositionConfiguration = Nothing
-    , _idInputParallelism = Nothing
-    , _idInputId = Nothing
-    , _idInAppStreamNames = Nothing
-    , _idKinesisFirehoseInputDescription = Nothing
-    , _idInputSchema = Nothing
-    , _idKinesisStreamsInputDescription = Nothing
-    , _idNamePrefix = Nothing
-    , _idInputProcessingConfigurationDescription = Nothing
-    }
-
-
--- | Point at which the application is configured to read from the input stream.
-idInputStartingPositionConfiguration :: Lens' InputDescription (Maybe InputStartingPositionConfiguration)
-idInputStartingPositionConfiguration = lens _idInputStartingPositionConfiguration (\ s a -> s{_idInputStartingPositionConfiguration = a})
-
--- | Describes the configured parallelism (number of in-application streams mapped to the streaming source).
-idInputParallelism :: Lens' InputDescription (Maybe InputParallelism)
-idInputParallelism = lens _idInputParallelism (\ s a -> s{_idInputParallelism = a})
-
--- | Input ID associated with the application input. This is the ID that Amazon Kinesis Analytics assigns to each input configuration you add to your application.
-idInputId :: Lens' InputDescription (Maybe Text)
-idInputId = lens _idInputId (\ s a -> s{_idInputId = a})
-
--- | Returns the in-application stream names that are mapped to the stream source.
-idInAppStreamNames :: Lens' InputDescription [Text]
-idInAppStreamNames = lens _idInAppStreamNames (\ s a -> s{_idInAppStreamNames = a}) . _Default . _Coerce
-
--- | If an Amazon Kinesis Firehose delivery stream is configured as a streaming source, provides the delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.
-idKinesisFirehoseInputDescription :: Lens' InputDescription (Maybe KinesisFirehoseInputDescription)
-idKinesisFirehoseInputDescription = lens _idKinesisFirehoseInputDescription (\ s a -> s{_idKinesisFirehoseInputDescription = a})
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created.
-idInputSchema :: Lens' InputDescription (Maybe SourceSchema)
-idInputSchema = lens _idInputSchema (\ s a -> s{_idInputSchema = a})
-
--- | If an Amazon Kinesis stream is configured as streaming source, provides Amazon Kinesis stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.
-idKinesisStreamsInputDescription :: Lens' InputDescription (Maybe KinesisStreamsInputDescription)
-idKinesisStreamsInputDescription = lens _idKinesisStreamsInputDescription (\ s a -> s{_idKinesisStreamsInputDescription = a})
-
--- | In-application name prefix.
-idNamePrefix :: Lens' InputDescription (Maybe Text)
-idNamePrefix = lens _idNamePrefix (\ s a -> s{_idNamePrefix = a})
-
--- | The description of the preprocessor that executes on records in this input before the application's code is run.
-idInputProcessingConfigurationDescription :: Lens' InputDescription (Maybe InputProcessingConfigurationDescription)
-idInputProcessingConfigurationDescription = lens _idInputProcessingConfigurationDescription (\ s a -> s{_idInputProcessingConfigurationDescription = a})
-
-instance FromJSON InputDescription where
-        parseJSON
-          = withObject "InputDescription"
-              (\ x ->
-                 InputDescription' <$>
-                   (x .:? "InputStartingPositionConfiguration") <*>
-                     (x .:? "InputParallelism")
-                     <*> (x .:? "InputId")
-                     <*> (x .:? "InAppStreamNames" .!= mempty)
-                     <*> (x .:? "KinesisFirehoseInputDescription")
-                     <*> (x .:? "InputSchema")
-                     <*> (x .:? "KinesisStreamsInputDescription")
-                     <*> (x .:? "NamePrefix")
-                     <*>
-                     (x .:? "InputProcessingConfigurationDescription"))
-
-instance Hashable InputDescription where
-
-instance NFData InputDescription where
-
--- | An object that contains the Amazon Resource Name (ARN) of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess records in the stream, and the ARN of the IAM role that is used to access the AWS Lambda function.
---
---
---
--- /See:/ 'inputLambdaProcessor' smart constructor.
-data InputLambdaProcessor = InputLambdaProcessor'
-  { _ilpResourceARN :: !Text
-  , _ilpRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputLambdaProcessor' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilpResourceARN' - The ARN of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that operates on records in the stream.
---
--- * 'ilpRoleARN' - The ARN of the IAM role that is used to access the AWS Lambda function.
-inputLambdaProcessor
-    :: Text -- ^ 'ilpResourceARN'
-    -> Text -- ^ 'ilpRoleARN'
-    -> InputLambdaProcessor
-inputLambdaProcessor pResourceARN_ pRoleARN_ =
-  InputLambdaProcessor'
-    {_ilpResourceARN = pResourceARN_, _ilpRoleARN = pRoleARN_}
-
-
--- | The ARN of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that operates on records in the stream.
-ilpResourceARN :: Lens' InputLambdaProcessor Text
-ilpResourceARN = lens _ilpResourceARN (\ s a -> s{_ilpResourceARN = a})
-
--- | The ARN of the IAM role that is used to access the AWS Lambda function.
-ilpRoleARN :: Lens' InputLambdaProcessor Text
-ilpRoleARN = lens _ilpRoleARN (\ s a -> s{_ilpRoleARN = a})
-
-instance Hashable InputLambdaProcessor where
-
-instance NFData InputLambdaProcessor where
-
-instance ToJSON InputLambdaProcessor where
-        toJSON InputLambdaProcessor'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _ilpResourceARN),
-                  Just ("RoleARN" .= _ilpRoleARN)])
-
--- | An object that contains the Amazon Resource Name (ARN) of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess records in the stream, and the ARN of the IAM role that is used to access the AWS Lambda expression.
---
---
---
--- /See:/ 'inputLambdaProcessorDescription' smart constructor.
-data InputLambdaProcessorDescription = InputLambdaProcessorDescription'
-  { _ilpdResourceARN :: !(Maybe Text)
-  , _ilpdRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputLambdaProcessorDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilpdResourceARN' - The ARN of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess the records in the stream.
---
--- * 'ilpdRoleARN' - The ARN of the IAM role that is used to access the AWS Lambda function.
-inputLambdaProcessorDescription
-    :: InputLambdaProcessorDescription
-inputLambdaProcessorDescription =
-  InputLambdaProcessorDescription'
-    {_ilpdResourceARN = Nothing, _ilpdRoleARN = Nothing}
-
-
--- | The ARN of the <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess the records in the stream.
-ilpdResourceARN :: Lens' InputLambdaProcessorDescription (Maybe Text)
-ilpdResourceARN = lens _ilpdResourceARN (\ s a -> s{_ilpdResourceARN = a})
-
--- | The ARN of the IAM role that is used to access the AWS Lambda function.
-ilpdRoleARN :: Lens' InputLambdaProcessorDescription (Maybe Text)
-ilpdRoleARN = lens _ilpdRoleARN (\ s a -> s{_ilpdRoleARN = a})
-
-instance FromJSON InputLambdaProcessorDescription
-         where
-        parseJSON
-          = withObject "InputLambdaProcessorDescription"
-              (\ x ->
-                 InputLambdaProcessorDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable InputLambdaProcessorDescription
-         where
-
-instance NFData InputLambdaProcessorDescription where
-
--- | Represents an update to the 'InputLambdaProcessor' that is used to preprocess the records in the stream.
---
---
---
--- /See:/ 'inputLambdaProcessorUpdate' smart constructor.
-data InputLambdaProcessorUpdate = InputLambdaProcessorUpdate'
-  { _ilpuRoleARNUpdate     :: !(Maybe Text)
-  , _ilpuResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputLambdaProcessorUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilpuRoleARNUpdate' - The ARN of the new IAM role that is used to access the AWS Lambda function.
---
--- * 'ilpuResourceARNUpdate' - The Amazon Resource Name (ARN) of the new <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess the records in the stream.
-inputLambdaProcessorUpdate
-    :: InputLambdaProcessorUpdate
-inputLambdaProcessorUpdate =
-  InputLambdaProcessorUpdate'
-    {_ilpuRoleARNUpdate = Nothing, _ilpuResourceARNUpdate = Nothing}
-
-
--- | The ARN of the new IAM role that is used to access the AWS Lambda function.
-ilpuRoleARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)
-ilpuRoleARNUpdate = lens _ilpuRoleARNUpdate (\ s a -> s{_ilpuRoleARNUpdate = a})
-
--- | The Amazon Resource Name (ARN) of the new <https://aws.amazon.com/documentation/lambda/ AWS Lambda> function that is used to preprocess the records in the stream.
-ilpuResourceARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)
-ilpuResourceARNUpdate = lens _ilpuResourceARNUpdate (\ s a -> s{_ilpuResourceARNUpdate = a})
-
-instance Hashable InputLambdaProcessorUpdate where
-
-instance NFData InputLambdaProcessorUpdate where
-
-instance ToJSON InputLambdaProcessorUpdate where
-        toJSON InputLambdaProcessorUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _ilpuRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _ilpuResourceARNUpdate])
-
--- | Describes the number of in-application streams to create for a given streaming source. For information about parallelism, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html Configuring Application Input> .
---
---
---
--- /See:/ 'inputParallelism' smart constructor.
-newtype InputParallelism = InputParallelism'
-  { _ipCount :: Maybe Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputParallelism' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipCount' - Number of in-application streams to create. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits> .
-inputParallelism
-    :: InputParallelism
-inputParallelism = InputParallelism' {_ipCount = Nothing}
-
-
--- | Number of in-application streams to create. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits> .
-ipCount :: Lens' InputParallelism (Maybe Natural)
-ipCount = lens _ipCount (\ s a -> s{_ipCount = a}) . mapping _Nat
-
-instance FromJSON InputParallelism where
-        parseJSON
-          = withObject "InputParallelism"
-              (\ x -> InputParallelism' <$> (x .:? "Count"))
-
-instance Hashable InputParallelism where
-
-instance NFData InputParallelism where
-
-instance ToJSON InputParallelism where
-        toJSON InputParallelism'{..}
-          = object (catMaybes [("Count" .=) <$> _ipCount])
-
--- | Provides updates to the parallelism count.
---
---
---
--- /See:/ 'inputParallelismUpdate' smart constructor.
-newtype InputParallelismUpdate = InputParallelismUpdate'
-  { _ipuCountUpdate :: Maybe Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputParallelismUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipuCountUpdate' - Number of in-application streams to create for the specified streaming source.
-inputParallelismUpdate
-    :: InputParallelismUpdate
-inputParallelismUpdate = InputParallelismUpdate' {_ipuCountUpdate = Nothing}
-
-
--- | Number of in-application streams to create for the specified streaming source.
-ipuCountUpdate :: Lens' InputParallelismUpdate (Maybe Natural)
-ipuCountUpdate = lens _ipuCountUpdate (\ s a -> s{_ipuCountUpdate = a}) . mapping _Nat
-
-instance Hashable InputParallelismUpdate where
-
-instance NFData InputParallelismUpdate where
-
-instance ToJSON InputParallelismUpdate where
-        toJSON InputParallelismUpdate'{..}
-          = object
-              (catMaybes [("CountUpdate" .=) <$> _ipuCountUpdate])
-
--- | Provides a description of a processor that is used to preprocess the records in the stream before being processed by your application code. Currently, the only input processor available is <https://aws.amazon.com/documentation/lambda/ AWS Lambda> .
---
---
---
--- /See:/ 'inputProcessingConfiguration' smart constructor.
-newtype InputProcessingConfiguration = InputProcessingConfiguration'
-  { _ipcInputLambdaProcessor :: InputLambdaProcessor
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputProcessingConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipcInputLambdaProcessor' - The 'InputLambdaProcessor' that is used to preprocess the records in the stream before being processed by your application code.
-inputProcessingConfiguration
-    :: InputLambdaProcessor -- ^ 'ipcInputLambdaProcessor'
-    -> InputProcessingConfiguration
-inputProcessingConfiguration pInputLambdaProcessor_ =
-  InputProcessingConfiguration'
-    {_ipcInputLambdaProcessor = pInputLambdaProcessor_}
-
-
--- | The 'InputLambdaProcessor' that is used to preprocess the records in the stream before being processed by your application code.
-ipcInputLambdaProcessor :: Lens' InputProcessingConfiguration InputLambdaProcessor
-ipcInputLambdaProcessor = lens _ipcInputLambdaProcessor (\ s a -> s{_ipcInputLambdaProcessor = a})
-
-instance Hashable InputProcessingConfiguration where
-
-instance NFData InputProcessingConfiguration where
-
-instance ToJSON InputProcessingConfiguration where
-        toJSON InputProcessingConfiguration'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("InputLambdaProcessor" .=
-                       _ipcInputLambdaProcessor)])
-
--- | Provides configuration information about an input processor. Currently, the only input processor available is <https://aws.amazon.com/documentation/lambda/ AWS Lambda> .
---
---
---
--- /See:/ 'inputProcessingConfigurationDescription' smart constructor.
-newtype InputProcessingConfigurationDescription = InputProcessingConfigurationDescription'
-  { _ipcdInputLambdaProcessorDescription :: Maybe InputLambdaProcessorDescription
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputProcessingConfigurationDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipcdInputLambdaProcessorDescription' - Provides configuration information about the associated 'InputLambdaProcessorDescription' .
-inputProcessingConfigurationDescription
-    :: InputProcessingConfigurationDescription
-inputProcessingConfigurationDescription =
-  InputProcessingConfigurationDescription'
-    {_ipcdInputLambdaProcessorDescription = Nothing}
-
-
--- | Provides configuration information about the associated 'InputLambdaProcessorDescription' .
-ipcdInputLambdaProcessorDescription :: Lens' InputProcessingConfigurationDescription (Maybe InputLambdaProcessorDescription)
-ipcdInputLambdaProcessorDescription = lens _ipcdInputLambdaProcessorDescription (\ s a -> s{_ipcdInputLambdaProcessorDescription = a})
-
-instance FromJSON
-           InputProcessingConfigurationDescription
-         where
-        parseJSON
-          = withObject
-              "InputProcessingConfigurationDescription"
-              (\ x ->
-                 InputProcessingConfigurationDescription' <$>
-                   (x .:? "InputLambdaProcessorDescription"))
-
-instance Hashable
-           InputProcessingConfigurationDescription
-         where
-
-instance NFData
-           InputProcessingConfigurationDescription
-         where
-
--- | Describes updates to an 'InputProcessingConfiguration' .
---
---
---
--- /See:/ 'inputProcessingConfigurationUpdate' smart constructor.
-newtype InputProcessingConfigurationUpdate = InputProcessingConfigurationUpdate'
-  { _ipcuInputLambdaProcessorUpdate :: InputLambdaProcessorUpdate
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputProcessingConfigurationUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipcuInputLambdaProcessorUpdate' - Provides update information for an 'InputLambdaProcessor' .
-inputProcessingConfigurationUpdate
-    :: InputLambdaProcessorUpdate -- ^ 'ipcuInputLambdaProcessorUpdate'
-    -> InputProcessingConfigurationUpdate
-inputProcessingConfigurationUpdate pInputLambdaProcessorUpdate_ =
-  InputProcessingConfigurationUpdate'
-    {_ipcuInputLambdaProcessorUpdate = pInputLambdaProcessorUpdate_}
-
-
--- | Provides update information for an 'InputLambdaProcessor' .
-ipcuInputLambdaProcessorUpdate :: Lens' InputProcessingConfigurationUpdate InputLambdaProcessorUpdate
-ipcuInputLambdaProcessorUpdate = lens _ipcuInputLambdaProcessorUpdate (\ s a -> s{_ipcuInputLambdaProcessorUpdate = a})
-
-instance Hashable InputProcessingConfigurationUpdate
-         where
-
-instance NFData InputProcessingConfigurationUpdate
-         where
-
-instance ToJSON InputProcessingConfigurationUpdate
-         where
-        toJSON InputProcessingConfigurationUpdate'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("InputLambdaProcessorUpdate" .=
-                       _ipcuInputLambdaProcessorUpdate)])
-
--- | Describes updates for the application's input schema.
---
---
---
--- /See:/ 'inputSchemaUpdate' smart constructor.
-data InputSchemaUpdate = InputSchemaUpdate'
-  { _isuRecordFormatUpdate   :: !(Maybe RecordFormat)
-  , _isuRecordEncodingUpdate :: !(Maybe Text)
-  , _isuRecordColumnUpdates  :: !(Maybe (List1 RecordColumn))
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputSchemaUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'isuRecordFormatUpdate' - Specifies the format of the records on the streaming source.
---
--- * 'isuRecordEncodingUpdate' - Specifies the encoding of the records in the streaming source. For example, UTF-8.
---
--- * 'isuRecordColumnUpdates' - A list of @RecordColumn@ objects. Each object describes the mapping of the streaming source element to the corresponding column in the in-application stream.
-inputSchemaUpdate
-    :: InputSchemaUpdate
-inputSchemaUpdate =
-  InputSchemaUpdate'
-    { _isuRecordFormatUpdate = Nothing
-    , _isuRecordEncodingUpdate = Nothing
-    , _isuRecordColumnUpdates = Nothing
-    }
-
-
--- | Specifies the format of the records on the streaming source.
-isuRecordFormatUpdate :: Lens' InputSchemaUpdate (Maybe RecordFormat)
-isuRecordFormatUpdate = lens _isuRecordFormatUpdate (\ s a -> s{_isuRecordFormatUpdate = a})
-
--- | Specifies the encoding of the records in the streaming source. For example, UTF-8.
-isuRecordEncodingUpdate :: Lens' InputSchemaUpdate (Maybe Text)
-isuRecordEncodingUpdate = lens _isuRecordEncodingUpdate (\ s a -> s{_isuRecordEncodingUpdate = a})
-
--- | A list of @RecordColumn@ objects. Each object describes the mapping of the streaming source element to the corresponding column in the in-application stream.
-isuRecordColumnUpdates :: Lens' InputSchemaUpdate (Maybe (NonEmpty RecordColumn))
-isuRecordColumnUpdates = lens _isuRecordColumnUpdates (\ s a -> s{_isuRecordColumnUpdates = a}) . mapping _List1
-
-instance Hashable InputSchemaUpdate where
-
-instance NFData InputSchemaUpdate where
-
-instance ToJSON InputSchemaUpdate where
-        toJSON InputSchemaUpdate'{..}
-          = object
-              (catMaybes
-                 [("RecordFormatUpdate" .=) <$>
-                    _isuRecordFormatUpdate,
-                  ("RecordEncodingUpdate" .=) <$>
-                    _isuRecordEncodingUpdate,
-                  ("RecordColumnUpdates" .=) <$>
-                    _isuRecordColumnUpdates])
-
--- | Describes the point at which the application reads from the streaming source.
---
---
---
--- /See:/ 'inputStartingPositionConfiguration' smart constructor.
-newtype InputStartingPositionConfiguration = InputStartingPositionConfiguration'
-  { _ispcInputStartingPosition :: Maybe InputStartingPosition
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputStartingPositionConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ispcInputStartingPosition' - The starting position on the stream.     * @NOW@ - Start reading just after the most recent record in the stream, start at the request time stamp that the customer issued.     * @TRIM_HORIZON@ - Start reading at the last untrimmed record in the stream, which is the oldest record available in the stream. This option is not available for an Amazon Kinesis Firehose delivery stream.     * @LAST_STOPPED_POINT@ - Resume reading from where the application last stopped reading.
-inputStartingPositionConfiguration
-    :: InputStartingPositionConfiguration
-inputStartingPositionConfiguration =
-  InputStartingPositionConfiguration' {_ispcInputStartingPosition = Nothing}
-
-
--- | The starting position on the stream.     * @NOW@ - Start reading just after the most recent record in the stream, start at the request time stamp that the customer issued.     * @TRIM_HORIZON@ - Start reading at the last untrimmed record in the stream, which is the oldest record available in the stream. This option is not available for an Amazon Kinesis Firehose delivery stream.     * @LAST_STOPPED_POINT@ - Resume reading from where the application last stopped reading.
-ispcInputStartingPosition :: Lens' InputStartingPositionConfiguration (Maybe InputStartingPosition)
-ispcInputStartingPosition = lens _ispcInputStartingPosition (\ s a -> s{_ispcInputStartingPosition = a})
-
-instance FromJSON InputStartingPositionConfiguration
-         where
-        parseJSON
-          = withObject "InputStartingPositionConfiguration"
-              (\ x ->
-                 InputStartingPositionConfiguration' <$>
-                   (x .:? "InputStartingPosition"))
-
-instance Hashable InputStartingPositionConfiguration
-         where
-
-instance NFData InputStartingPositionConfiguration
-         where
-
-instance ToJSON InputStartingPositionConfiguration
-         where
-        toJSON InputStartingPositionConfiguration'{..}
-          = object
-              (catMaybes
-                 [("InputStartingPosition" .=) <$>
-                    _ispcInputStartingPosition])
-
--- | Describes updates to a specific input configuration (identified by the @InputId@ of an application).
---
---
---
--- /See:/ 'inputUpdate' smart constructor.
-data InputUpdate = InputUpdate'
-  { _iuInputProcessingConfigurationUpdate :: !(Maybe InputProcessingConfigurationUpdate)
-  , _iuKinesisStreamsInputUpdate :: !(Maybe KinesisStreamsInputUpdate)
-  , _iuInputParallelismUpdate :: !(Maybe InputParallelismUpdate)
-  , _iuNamePrefixUpdate :: !(Maybe Text)
-  , _iuInputSchemaUpdate :: !(Maybe InputSchemaUpdate)
-  , _iuKinesisFirehoseInputUpdate :: !(Maybe KinesisFirehoseInputUpdate)
-  , _iuInputId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iuInputProcessingConfigurationUpdate' - Describes updates for an input processing configuration.
---
--- * 'iuKinesisStreamsInputUpdate' - If an Amazon Kinesis stream is the streaming source to be updated, provides an updated stream Amazon Resource Name (ARN) and IAM role ARN.
---
--- * 'iuInputParallelismUpdate' - Describes the parallelism updates (the number in-application streams Amazon Kinesis Analytics creates for the specific streaming source).
---
--- * 'iuNamePrefixUpdate' - Name prefix for in-application streams that Amazon Kinesis Analytics creates for the specific streaming source.
---
--- * 'iuInputSchemaUpdate' - Describes the data format on the streaming source, and how record elements on the streaming source map to columns of the in-application stream that is created.
---
--- * 'iuKinesisFirehoseInputUpdate' - If an Amazon Kinesis Firehose delivery stream is the streaming source to be updated, provides an updated stream ARN and IAM role ARN.
---
--- * 'iuInputId' - Input ID of the application input to be updated.
-inputUpdate
-    :: Text -- ^ 'iuInputId'
-    -> InputUpdate
-inputUpdate pInputId_ =
-  InputUpdate'
-    { _iuInputProcessingConfigurationUpdate = Nothing
-    , _iuKinesisStreamsInputUpdate = Nothing
-    , _iuInputParallelismUpdate = Nothing
-    , _iuNamePrefixUpdate = Nothing
-    , _iuInputSchemaUpdate = Nothing
-    , _iuKinesisFirehoseInputUpdate = Nothing
-    , _iuInputId = pInputId_
-    }
-
-
--- | Describes updates for an input processing configuration.
-iuInputProcessingConfigurationUpdate :: Lens' InputUpdate (Maybe InputProcessingConfigurationUpdate)
-iuInputProcessingConfigurationUpdate = lens _iuInputProcessingConfigurationUpdate (\ s a -> s{_iuInputProcessingConfigurationUpdate = a})
-
--- | If an Amazon Kinesis stream is the streaming source to be updated, provides an updated stream Amazon Resource Name (ARN) and IAM role ARN.
-iuKinesisStreamsInputUpdate :: Lens' InputUpdate (Maybe KinesisStreamsInputUpdate)
-iuKinesisStreamsInputUpdate = lens _iuKinesisStreamsInputUpdate (\ s a -> s{_iuKinesisStreamsInputUpdate = a})
-
--- | Describes the parallelism updates (the number in-application streams Amazon Kinesis Analytics creates for the specific streaming source).
-iuInputParallelismUpdate :: Lens' InputUpdate (Maybe InputParallelismUpdate)
-iuInputParallelismUpdate = lens _iuInputParallelismUpdate (\ s a -> s{_iuInputParallelismUpdate = a})
-
--- | Name prefix for in-application streams that Amazon Kinesis Analytics creates for the specific streaming source.
-iuNamePrefixUpdate :: Lens' InputUpdate (Maybe Text)
-iuNamePrefixUpdate = lens _iuNamePrefixUpdate (\ s a -> s{_iuNamePrefixUpdate = a})
-
--- | Describes the data format on the streaming source, and how record elements on the streaming source map to columns of the in-application stream that is created.
-iuInputSchemaUpdate :: Lens' InputUpdate (Maybe InputSchemaUpdate)
-iuInputSchemaUpdate = lens _iuInputSchemaUpdate (\ s a -> s{_iuInputSchemaUpdate = a})
-
--- | If an Amazon Kinesis Firehose delivery stream is the streaming source to be updated, provides an updated stream ARN and IAM role ARN.
-iuKinesisFirehoseInputUpdate :: Lens' InputUpdate (Maybe KinesisFirehoseInputUpdate)
-iuKinesisFirehoseInputUpdate = lens _iuKinesisFirehoseInputUpdate (\ s a -> s{_iuKinesisFirehoseInputUpdate = a})
-
--- | Input ID of the application input to be updated.
-iuInputId :: Lens' InputUpdate Text
-iuInputId = lens _iuInputId (\ s a -> s{_iuInputId = a})
-
-instance Hashable InputUpdate where
-
-instance NFData InputUpdate where
-
-instance ToJSON InputUpdate where
-        toJSON InputUpdate'{..}
-          = object
-              (catMaybes
-                 [("InputProcessingConfigurationUpdate" .=) <$>
-                    _iuInputProcessingConfigurationUpdate,
-                  ("KinesisStreamsInputUpdate" .=) <$>
-                    _iuKinesisStreamsInputUpdate,
-                  ("InputParallelismUpdate" .=) <$>
-                    _iuInputParallelismUpdate,
-                  ("NamePrefixUpdate" .=) <$> _iuNamePrefixUpdate,
-                  ("InputSchemaUpdate" .=) <$> _iuInputSchemaUpdate,
-                  ("KinesisFirehoseInputUpdate" .=) <$>
-                    _iuKinesisFirehoseInputUpdate,
-                  Just ("InputId" .= _iuInputId)])
-
--- | Provides additional mapping information when JSON is the record format on the streaming source.
---
---
---
--- /See:/ 'jsonMappingParameters' smart constructor.
-newtype JSONMappingParameters = JSONMappingParameters'
-  { _jmpRecordRowPath :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'JSONMappingParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jmpRecordRowPath' - Path to the top-level parent that contains the records.
-jsonMappingParameters
-    :: Text -- ^ 'jmpRecordRowPath'
-    -> JSONMappingParameters
-jsonMappingParameters pRecordRowPath_ =
-  JSONMappingParameters' {_jmpRecordRowPath = pRecordRowPath_}
-
-
--- | Path to the top-level parent that contains the records.
-jmpRecordRowPath :: Lens' JSONMappingParameters Text
-jmpRecordRowPath = lens _jmpRecordRowPath (\ s a -> s{_jmpRecordRowPath = a})
-
-instance FromJSON JSONMappingParameters where
-        parseJSON
-          = withObject "JSONMappingParameters"
-              (\ x ->
-                 JSONMappingParameters' <$> (x .: "RecordRowPath"))
-
-instance Hashable JSONMappingParameters where
-
-instance NFData JSONMappingParameters where
-
-instance ToJSON JSONMappingParameters where
-        toJSON JSONMappingParameters'{..}
-          = object
-              (catMaybes
-                 [Just ("RecordRowPath" .= _jmpRecordRowPath)])
-
--- | Identifies an Amazon Kinesis Firehose delivery stream as the streaming source. You provide the delivery stream's Amazon Resource Name (ARN) and an IAM role ARN that enables Amazon Kinesis Analytics to access the stream on your behalf.
---
---
---
--- /See:/ 'kinesisFirehoseInput' smart constructor.
-data KinesisFirehoseInput = KinesisFirehoseInput'
-  { _kfiResourceARN :: !Text
-  , _kfiRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseInput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfiResourceARN' - ARN of the input delivery stream.
---
--- * 'kfiRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to make sure the role has necessary permissions to access the stream.
-kinesisFirehoseInput
-    :: Text -- ^ 'kfiResourceARN'
-    -> Text -- ^ 'kfiRoleARN'
-    -> KinesisFirehoseInput
-kinesisFirehoseInput pResourceARN_ pRoleARN_ =
-  KinesisFirehoseInput'
-    {_kfiResourceARN = pResourceARN_, _kfiRoleARN = pRoleARN_}
-
-
--- | ARN of the input delivery stream.
-kfiResourceARN :: Lens' KinesisFirehoseInput Text
-kfiResourceARN = lens _kfiResourceARN (\ s a -> s{_kfiResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to make sure the role has necessary permissions to access the stream.
-kfiRoleARN :: Lens' KinesisFirehoseInput Text
-kfiRoleARN = lens _kfiRoleARN (\ s a -> s{_kfiRoleARN = a})
-
-instance Hashable KinesisFirehoseInput where
-
-instance NFData KinesisFirehoseInput where
-
-instance ToJSON KinesisFirehoseInput where
-        toJSON KinesisFirehoseInput'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _kfiResourceARN),
-                  Just ("RoleARN" .= _kfiRoleARN)])
-
--- | Describes the Amazon Kinesis Firehose delivery stream that is configured as the streaming source in the application input configuration.
---
---
---
--- /See:/ 'kinesisFirehoseInputDescription' smart constructor.
-data KinesisFirehoseInputDescription = KinesisFirehoseInputDescription'
-  { _kfidResourceARN :: !(Maybe Text)
-  , _kfidRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseInputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfidResourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream.
---
--- * 'kfidRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics assumes to access the stream.
-kinesisFirehoseInputDescription
-    :: KinesisFirehoseInputDescription
-kinesisFirehoseInputDescription =
-  KinesisFirehoseInputDescription'
-    {_kfidResourceARN = Nothing, _kfidRoleARN = Nothing}
-
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream.
-kfidResourceARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)
-kfidResourceARN = lens _kfidResourceARN (\ s a -> s{_kfidResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics assumes to access the stream.
-kfidRoleARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)
-kfidRoleARN = lens _kfidRoleARN (\ s a -> s{_kfidRoleARN = a})
-
-instance FromJSON KinesisFirehoseInputDescription
-         where
-        parseJSON
-          = withObject "KinesisFirehoseInputDescription"
-              (\ x ->
-                 KinesisFirehoseInputDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable KinesisFirehoseInputDescription
-         where
-
-instance NFData KinesisFirehoseInputDescription where
-
--- | When updating application input configuration, provides information about an Amazon Kinesis Firehose delivery stream as the streaming source.
---
---
---
--- /See:/ 'kinesisFirehoseInputUpdate' smart constructor.
-data KinesisFirehoseInputUpdate = KinesisFirehoseInputUpdate'
-  { _kfiuRoleARNUpdate     :: !(Maybe Text)
-  , _kfiuResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseInputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfiuRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role.
---
--- * 'kfiuResourceARNUpdate' - Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose delivery stream to read.
-kinesisFirehoseInputUpdate
-    :: KinesisFirehoseInputUpdate
-kinesisFirehoseInputUpdate =
-  KinesisFirehoseInputUpdate'
-    {_kfiuRoleARNUpdate = Nothing, _kfiuResourceARNUpdate = Nothing}
-
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role.
-kfiuRoleARNUpdate :: Lens' KinesisFirehoseInputUpdate (Maybe Text)
-kfiuRoleARNUpdate = lens _kfiuRoleARNUpdate (\ s a -> s{_kfiuRoleARNUpdate = a})
-
--- | Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose delivery stream to read.
-kfiuResourceARNUpdate :: Lens' KinesisFirehoseInputUpdate (Maybe Text)
-kfiuResourceARNUpdate = lens _kfiuResourceARNUpdate (\ s a -> s{_kfiuResourceARNUpdate = a})
-
-instance Hashable KinesisFirehoseInputUpdate where
-
-instance NFData KinesisFirehoseInputUpdate where
-
-instance ToJSON KinesisFirehoseInputUpdate where
-        toJSON KinesisFirehoseInputUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _kfiuRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _kfiuResourceARNUpdate])
-
--- | When configuring application output, identifies an Amazon Kinesis Firehose delivery stream as the destination. You provide the stream Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to write to the stream on your behalf.
---
---
---
--- /See:/ 'kinesisFirehoseOutput' smart constructor.
-data KinesisFirehoseOutput = KinesisFirehoseOutput'
-  { _kfoResourceARN :: !Text
-  , _kfoRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfoResourceARN' - ARN of the destination Amazon Kinesis Firehose delivery stream to write to.
---
--- * 'kfoRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role.
-kinesisFirehoseOutput
-    :: Text -- ^ 'kfoResourceARN'
-    -> Text -- ^ 'kfoRoleARN'
-    -> KinesisFirehoseOutput
-kinesisFirehoseOutput pResourceARN_ pRoleARN_ =
-  KinesisFirehoseOutput'
-    {_kfoResourceARN = pResourceARN_, _kfoRoleARN = pRoleARN_}
-
-
--- | ARN of the destination Amazon Kinesis Firehose delivery stream to write to.
-kfoResourceARN :: Lens' KinesisFirehoseOutput Text
-kfoResourceARN = lens _kfoResourceARN (\ s a -> s{_kfoResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role.
-kfoRoleARN :: Lens' KinesisFirehoseOutput Text
-kfoRoleARN = lens _kfoRoleARN (\ s a -> s{_kfoRoleARN = a})
-
-instance Hashable KinesisFirehoseOutput where
-
-instance NFData KinesisFirehoseOutput where
-
-instance ToJSON KinesisFirehoseOutput where
-        toJSON KinesisFirehoseOutput'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _kfoResourceARN),
-                  Just ("RoleARN" .= _kfoRoleARN)])
-
--- | For an application output, describes the Amazon Kinesis Firehose delivery stream configured as its destination.
---
---
---
--- /See:/ 'kinesisFirehoseOutputDescription' smart constructor.
-data KinesisFirehoseOutputDescription = KinesisFirehoseOutputDescription'
-  { _kfodResourceARN :: !(Maybe Text)
-  , _kfodRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseOutputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfodResourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream.
---
--- * 'kfodRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-kinesisFirehoseOutputDescription
-    :: KinesisFirehoseOutputDescription
-kinesisFirehoseOutputDescription =
-  KinesisFirehoseOutputDescription'
-    {_kfodResourceARN = Nothing, _kfodRoleARN = Nothing}
-
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream.
-kfodResourceARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)
-kfodResourceARN = lens _kfodResourceARN (\ s a -> s{_kfodResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-kfodRoleARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)
-kfodRoleARN = lens _kfodRoleARN (\ s a -> s{_kfodRoleARN = a})
-
-instance FromJSON KinesisFirehoseOutputDescription
-         where
-        parseJSON
-          = withObject "KinesisFirehoseOutputDescription"
-              (\ x ->
-                 KinesisFirehoseOutputDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable KinesisFirehoseOutputDescription
-         where
-
-instance NFData KinesisFirehoseOutputDescription
-         where
-
--- | When updating an output configuration using the 'UpdateApplication' operation, provides information about an Amazon Kinesis Firehose delivery stream configured as the destination.
---
---
---
--- /See:/ 'kinesisFirehoseOutputUpdate' smart constructor.
-data KinesisFirehoseOutputUpdate = KinesisFirehoseOutputUpdate'
-  { _kfouRoleARNUpdate     :: !(Maybe Text)
-  , _kfouResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseOutputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfouRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role.
---
--- * 'kfouResourceARNUpdate' - Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream to write to.
-kinesisFirehoseOutputUpdate
-    :: KinesisFirehoseOutputUpdate
-kinesisFirehoseOutputUpdate =
-  KinesisFirehoseOutputUpdate'
-    {_kfouRoleARNUpdate = Nothing, _kfouResourceARNUpdate = Nothing}
-
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant necessary permissions to this role.
-kfouRoleARNUpdate :: Lens' KinesisFirehoseOutputUpdate (Maybe Text)
-kfouRoleARNUpdate = lens _kfouRoleARNUpdate (\ s a -> s{_kfouRoleARNUpdate = a})
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery stream to write to.
-kfouResourceARNUpdate :: Lens' KinesisFirehoseOutputUpdate (Maybe Text)
-kfouResourceARNUpdate = lens _kfouResourceARNUpdate (\ s a -> s{_kfouResourceARNUpdate = a})
-
-instance Hashable KinesisFirehoseOutputUpdate where
-
-instance NFData KinesisFirehoseOutputUpdate where
-
-instance ToJSON KinesisFirehoseOutputUpdate where
-        toJSON KinesisFirehoseOutputUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _kfouRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _kfouResourceARNUpdate])
-
--- | Identifies an Amazon Kinesis stream as the streaming source. You provide the stream's Amazon Resource Name (ARN) and an IAM role ARN that enables Amazon Kinesis Analytics to access the stream on your behalf.
---
---
---
--- /See:/ 'kinesisStreamsInput' smart constructor.
-data KinesisStreamsInput = KinesisStreamsInput'
-  { _ksiResourceARN :: !Text
-  , _ksiRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsInput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksiResourceARN' - ARN of the input Amazon Kinesis stream to read.
---
--- * 'ksiRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
-kinesisStreamsInput
-    :: Text -- ^ 'ksiResourceARN'
-    -> Text -- ^ 'ksiRoleARN'
-    -> KinesisStreamsInput
-kinesisStreamsInput pResourceARN_ pRoleARN_ =
-  KinesisStreamsInput'
-    {_ksiResourceARN = pResourceARN_, _ksiRoleARN = pRoleARN_}
-
-
--- | ARN of the input Amazon Kinesis stream to read.
-ksiResourceARN :: Lens' KinesisStreamsInput Text
-ksiResourceARN = lens _ksiResourceARN (\ s a -> s{_ksiResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
-ksiRoleARN :: Lens' KinesisStreamsInput Text
-ksiRoleARN = lens _ksiRoleARN (\ s a -> s{_ksiRoleARN = a})
-
-instance Hashable KinesisStreamsInput where
-
-instance NFData KinesisStreamsInput where
-
-instance ToJSON KinesisStreamsInput where
-        toJSON KinesisStreamsInput'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _ksiResourceARN),
-                  Just ("RoleARN" .= _ksiRoleARN)])
-
--- | Describes the Amazon Kinesis stream that is configured as the streaming source in the application input configuration.
---
---
---
--- /See:/ 'kinesisStreamsInputDescription' smart constructor.
-data KinesisStreamsInputDescription = KinesisStreamsInputDescription'
-  { _ksidResourceARN :: !(Maybe Text)
-  , _ksidRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsInputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksidResourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis stream.
---
--- * 'ksidRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-kinesisStreamsInputDescription
-    :: KinesisStreamsInputDescription
-kinesisStreamsInputDescription =
-  KinesisStreamsInputDescription'
-    {_ksidResourceARN = Nothing, _ksidRoleARN = Nothing}
-
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
-ksidResourceARN :: Lens' KinesisStreamsInputDescription (Maybe Text)
-ksidResourceARN = lens _ksidResourceARN (\ s a -> s{_ksidResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-ksidRoleARN :: Lens' KinesisStreamsInputDescription (Maybe Text)
-ksidRoleARN = lens _ksidRoleARN (\ s a -> s{_ksidRoleARN = a})
-
-instance FromJSON KinesisStreamsInputDescription
-         where
-        parseJSON
-          = withObject "KinesisStreamsInputDescription"
-              (\ x ->
-                 KinesisStreamsInputDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable KinesisStreamsInputDescription
-         where
-
-instance NFData KinesisStreamsInputDescription where
-
--- | When updating application input configuration, provides information about an Amazon Kinesis stream as the streaming source.
---
---
---
--- /See:/ 'kinesisStreamsInputUpdate' smart constructor.
-data KinesisStreamsInputUpdate = KinesisStreamsInputUpdate'
-  { _ksiuRoleARNUpdate     :: !(Maybe Text)
-  , _ksiuResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsInputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksiuRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
---
--- * 'ksiuResourceARNUpdate' - Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
-kinesisStreamsInputUpdate
-    :: KinesisStreamsInputUpdate
-kinesisStreamsInputUpdate =
-  KinesisStreamsInputUpdate'
-    {_ksiuRoleARNUpdate = Nothing, _ksiuResourceARNUpdate = Nothing}
-
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
-ksiuRoleARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)
-ksiuRoleARNUpdate = lens _ksiuRoleARNUpdate (\ s a -> s{_ksiuRoleARNUpdate = a})
-
--- | Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
-ksiuResourceARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)
-ksiuResourceARNUpdate = lens _ksiuResourceARNUpdate (\ s a -> s{_ksiuResourceARNUpdate = a})
-
-instance Hashable KinesisStreamsInputUpdate where
-
-instance NFData KinesisStreamsInputUpdate where
-
-instance ToJSON KinesisStreamsInputUpdate where
-        toJSON KinesisStreamsInputUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _ksiuRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _ksiuResourceARNUpdate])
-
--- | When configuring application output, identifies an Amazon Kinesis stream as the destination. You provide the stream Amazon Resource Name (ARN) and also an IAM role ARN that Amazon Kinesis Analytics can use to write to the stream on your behalf.
---
---
---
--- /See:/ 'kinesisStreamsOutput' smart constructor.
-data KinesisStreamsOutput = KinesisStreamsOutput'
-  { _ksoResourceARN :: !Text
-  , _ksoRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksoResourceARN' - ARN of the destination Amazon Kinesis stream to write to.
---
--- * 'ksoRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role.
-kinesisStreamsOutput
-    :: Text -- ^ 'ksoResourceARN'
-    -> Text -- ^ 'ksoRoleARN'
-    -> KinesisStreamsOutput
-kinesisStreamsOutput pResourceARN_ pRoleARN_ =
-  KinesisStreamsOutput'
-    {_ksoResourceARN = pResourceARN_, _ksoRoleARN = pRoleARN_}
-
-
--- | ARN of the destination Amazon Kinesis stream to write to.
-ksoResourceARN :: Lens' KinesisStreamsOutput Text
-ksoResourceARN = lens _ksoResourceARN (\ s a -> s{_ksoResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination stream on your behalf. You need to grant the necessary permissions to this role.
-ksoRoleARN :: Lens' KinesisStreamsOutput Text
-ksoRoleARN = lens _ksoRoleARN (\ s a -> s{_ksoRoleARN = a})
-
-instance Hashable KinesisStreamsOutput where
-
-instance NFData KinesisStreamsOutput where
-
-instance ToJSON KinesisStreamsOutput where
-        toJSON KinesisStreamsOutput'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _ksoResourceARN),
-                  Just ("RoleARN" .= _ksoRoleARN)])
-
--- | For an application output, describes the Amazon Kinesis stream configured as its destination.
---
---
---
--- /See:/ 'kinesisStreamsOutputDescription' smart constructor.
-data KinesisStreamsOutputDescription = KinesisStreamsOutputDescription'
-  { _ksodResourceARN :: !(Maybe Text)
-  , _ksodRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsOutputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksodResourceARN' - Amazon Resource Name (ARN) of the Amazon Kinesis stream.
---
--- * 'ksodRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-kinesisStreamsOutputDescription
-    :: KinesisStreamsOutputDescription
-kinesisStreamsOutputDescription =
-  KinesisStreamsOutputDescription'
-    {_ksodResourceARN = Nothing, _ksodRoleARN = Nothing}
-
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
-ksodResourceARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)
-ksodResourceARN = lens _ksodResourceARN (\ s a -> s{_ksodResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream.
-ksodRoleARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)
-ksodRoleARN = lens _ksodRoleARN (\ s a -> s{_ksodRoleARN = a})
-
-instance FromJSON KinesisStreamsOutputDescription
-         where
-        parseJSON
-          = withObject "KinesisStreamsOutputDescription"
-              (\ x ->
-                 KinesisStreamsOutputDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable KinesisStreamsOutputDescription
-         where
-
-instance NFData KinesisStreamsOutputDescription where
-
--- | When updating an output configuration using the 'UpdateApplication' operation, provides information about an Amazon Kinesis stream configured as the destination.
---
---
---
--- /See:/ 'kinesisStreamsOutputUpdate' smart constructor.
-data KinesisStreamsOutputUpdate = KinesisStreamsOutputUpdate'
-  { _ksouRoleARNUpdate     :: !(Maybe Text)
-  , _ksouResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisStreamsOutputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ksouRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
---
--- * 'ksouResourceARNUpdate' - Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want to write the output.
-kinesisStreamsOutputUpdate
-    :: KinesisStreamsOutputUpdate
-kinesisStreamsOutputUpdate =
-  KinesisStreamsOutputUpdate'
-    {_ksouRoleARNUpdate = Nothing, _ksouResourceARNUpdate = Nothing}
-
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.
-ksouRoleARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)
-ksouRoleARNUpdate = lens _ksouRoleARNUpdate (\ s a -> s{_ksouRoleARNUpdate = a})
-
--- | Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want to write the output.
-ksouResourceARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)
-ksouResourceARNUpdate = lens _ksouResourceARNUpdate (\ s a -> s{_ksouResourceARNUpdate = a})
-
-instance Hashable KinesisStreamsOutputUpdate where
-
-instance NFData KinesisStreamsOutputUpdate where
-
-instance ToJSON KinesisStreamsOutputUpdate where
-        toJSON KinesisStreamsOutputUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _ksouRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _ksouResourceARNUpdate])
-
--- | When configuring application output, identifies an AWS Lambda function as the destination. You provide the function Amazon Resource Name (ARN) and also an IAM role ARN that Amazon Kinesis Analytics can use to write to the function on your behalf.
---
---
---
--- /See:/ 'lambdaOutput' smart constructor.
-data LambdaOutput = LambdaOutput'
-  { _loResourceARN :: !Text
-  , _loRoleARN     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'LambdaOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'loResourceARN' - Amazon Resource Name (ARN) of the destination Lambda function to write to.
---
--- * 'loRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function on your behalf. You need to grant the necessary permissions to this role.
-lambdaOutput
-    :: Text -- ^ 'loResourceARN'
-    -> Text -- ^ 'loRoleARN'
-    -> LambdaOutput
-lambdaOutput pResourceARN_ pRoleARN_ =
-  LambdaOutput' {_loResourceARN = pResourceARN_, _loRoleARN = pRoleARN_}
-
-
--- | Amazon Resource Name (ARN) of the destination Lambda function to write to.
-loResourceARN :: Lens' LambdaOutput Text
-loResourceARN = lens _loResourceARN (\ s a -> s{_loResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function on your behalf. You need to grant the necessary permissions to this role.
-loRoleARN :: Lens' LambdaOutput Text
-loRoleARN = lens _loRoleARN (\ s a -> s{_loRoleARN = a})
-
-instance Hashable LambdaOutput where
-
-instance NFData LambdaOutput where
-
-instance ToJSON LambdaOutput where
-        toJSON LambdaOutput'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceARN" .= _loResourceARN),
-                  Just ("RoleARN" .= _loRoleARN)])
-
--- | For an application output, describes the AWS Lambda function configured as its destination.
---
---
---
--- /See:/ 'lambdaOutputDescription' smart constructor.
-data LambdaOutputDescription = LambdaOutputDescription'
-  { _lodResourceARN :: !(Maybe Text)
-  , _lodRoleARN     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'LambdaOutputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lodResourceARN' - Amazon Resource Name (ARN) of the destination Lambda function.
---
--- * 'lodRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function.
-lambdaOutputDescription
-    :: LambdaOutputDescription
-lambdaOutputDescription =
-  LambdaOutputDescription' {_lodResourceARN = Nothing, _lodRoleARN = Nothing}
-
-
--- | Amazon Resource Name (ARN) of the destination Lambda function.
-lodResourceARN :: Lens' LambdaOutputDescription (Maybe Text)
-lodResourceARN = lens _lodResourceARN (\ s a -> s{_lodResourceARN = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function.
-lodRoleARN :: Lens' LambdaOutputDescription (Maybe Text)
-lodRoleARN = lens _lodRoleARN (\ s a -> s{_lodRoleARN = a})
-
-instance FromJSON LambdaOutputDescription where
-        parseJSON
-          = withObject "LambdaOutputDescription"
-              (\ x ->
-                 LambdaOutputDescription' <$>
-                   (x .:? "ResourceARN") <*> (x .:? "RoleARN"))
-
-instance Hashable LambdaOutputDescription where
-
-instance NFData LambdaOutputDescription where
-
--- | When updating an output configuration using the 'UpdateApplication' operation, provides information about an AWS Lambda function configured as the destination.
---
---
---
--- /See:/ 'lambdaOutputUpdate' smart constructor.
-data LambdaOutputUpdate = LambdaOutputUpdate'
-  { _louRoleARNUpdate     :: !(Maybe Text)
-  , _louResourceARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'LambdaOutputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'louRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function on your behalf. You need to grant the necessary permissions to this role.
---
--- * 'louResourceARNUpdate' - Amazon Resource Name (ARN) of the destination Lambda function.
-lambdaOutputUpdate
-    :: LambdaOutputUpdate
-lambdaOutputUpdate =
-  LambdaOutputUpdate'
-    {_louRoleARNUpdate = Nothing, _louResourceARNUpdate = Nothing}
-
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write to the destination function on your behalf. You need to grant the necessary permissions to this role.
-louRoleARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)
-louRoleARNUpdate = lens _louRoleARNUpdate (\ s a -> s{_louRoleARNUpdate = a})
-
--- | Amazon Resource Name (ARN) of the destination Lambda function.
-louResourceARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)
-louResourceARNUpdate = lens _louResourceARNUpdate (\ s a -> s{_louResourceARNUpdate = a})
-
-instance Hashable LambdaOutputUpdate where
-
-instance NFData LambdaOutputUpdate where
-
-instance ToJSON LambdaOutputUpdate where
-        toJSON LambdaOutputUpdate'{..}
-          = object
-              (catMaybes
-                 [("RoleARNUpdate" .=) <$> _louRoleARNUpdate,
-                  ("ResourceARNUpdate" .=) <$> _louResourceARNUpdate])
-
--- | When configuring application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.
---
---
---
--- /See:/ 'mappingParameters' smart constructor.
-data MappingParameters = MappingParameters'
-  { _mpCSVMappingParameters  :: !(Maybe CSVMappingParameters)
-  , _mpJSONMappingParameters :: !(Maybe JSONMappingParameters)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MappingParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mpCSVMappingParameters' - Provides additional mapping information when the record format uses delimiters (for example, CSV).
---
--- * 'mpJSONMappingParameters' - Provides additional mapping information when JSON is the record format on the streaming source.
-mappingParameters
-    :: MappingParameters
-mappingParameters =
-  MappingParameters'
-    {_mpCSVMappingParameters = Nothing, _mpJSONMappingParameters = Nothing}
-
-
--- | Provides additional mapping information when the record format uses delimiters (for example, CSV).
-mpCSVMappingParameters :: Lens' MappingParameters (Maybe CSVMappingParameters)
-mpCSVMappingParameters = lens _mpCSVMappingParameters (\ s a -> s{_mpCSVMappingParameters = a})
-
--- | Provides additional mapping information when JSON is the record format on the streaming source.
-mpJSONMappingParameters :: Lens' MappingParameters (Maybe JSONMappingParameters)
-mpJSONMappingParameters = lens _mpJSONMappingParameters (\ s a -> s{_mpJSONMappingParameters = a})
-
-instance FromJSON MappingParameters where
-        parseJSON
-          = withObject "MappingParameters"
-              (\ x ->
-                 MappingParameters' <$>
-                   (x .:? "CSVMappingParameters") <*>
-                     (x .:? "JSONMappingParameters"))
-
-instance Hashable MappingParameters where
-
-instance NFData MappingParameters where
-
-instance ToJSON MappingParameters where
-        toJSON MappingParameters'{..}
-          = object
-              (catMaybes
-                 [("CSVMappingParameters" .=) <$>
-                    _mpCSVMappingParameters,
-                  ("JSONMappingParameters" .=) <$>
-                    _mpJSONMappingParameters])
-
--- | Describes application output configuration in which you identify an in-application stream and a destination where you want the in-application stream data to be written. The destination can be an Amazon Kinesis stream or an Amazon Kinesis Firehose delivery stream.
---
---
---
---
--- For limits on how many destinations an application can write and other limitations, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html Limits> .
---
---
--- /See:/ 'output' smart constructor.
-data Output = Output'
-  { _oLambdaOutput          :: !(Maybe LambdaOutput)
-  , _oKinesisStreamsOutput  :: !(Maybe KinesisStreamsOutput)
-  , _oKinesisFirehoseOutput :: !(Maybe KinesisFirehoseOutput)
-  , _oName                  :: !Text
-  , _oDestinationSchema     :: !DestinationSchema
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Output' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oLambdaOutput' - Identifies an AWS Lambda function as the destination.
---
--- * 'oKinesisStreamsOutput' - Identifies an Amazon Kinesis stream as the destination.
---
--- * 'oKinesisFirehoseOutput' - Identifies an Amazon Kinesis Firehose delivery stream as the destination.
---
--- * 'oName' - Name of the in-application stream.
---
--- * 'oDestinationSchema' - Describes the data format when records are written to the destination. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
-output
-    :: Text -- ^ 'oName'
-    -> DestinationSchema -- ^ 'oDestinationSchema'
-    -> Output
-output pName_ pDestinationSchema_ =
-  Output'
-    { _oLambdaOutput = Nothing
-    , _oKinesisStreamsOutput = Nothing
-    , _oKinesisFirehoseOutput = Nothing
-    , _oName = pName_
-    , _oDestinationSchema = pDestinationSchema_
-    }
-
-
--- | Identifies an AWS Lambda function as the destination.
-oLambdaOutput :: Lens' Output (Maybe LambdaOutput)
-oLambdaOutput = lens _oLambdaOutput (\ s a -> s{_oLambdaOutput = a})
-
--- | Identifies an Amazon Kinesis stream as the destination.
-oKinesisStreamsOutput :: Lens' Output (Maybe KinesisStreamsOutput)
-oKinesisStreamsOutput = lens _oKinesisStreamsOutput (\ s a -> s{_oKinesisStreamsOutput = a})
-
--- | Identifies an Amazon Kinesis Firehose delivery stream as the destination.
-oKinesisFirehoseOutput :: Lens' Output (Maybe KinesisFirehoseOutput)
-oKinesisFirehoseOutput = lens _oKinesisFirehoseOutput (\ s a -> s{_oKinesisFirehoseOutput = a})
-
--- | Name of the in-application stream.
-oName :: Lens' Output Text
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | Describes the data format when records are written to the destination. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
-oDestinationSchema :: Lens' Output DestinationSchema
-oDestinationSchema = lens _oDestinationSchema (\ s a -> s{_oDestinationSchema = a})
-
-instance Hashable Output where
-
-instance NFData Output where
-
-instance ToJSON Output where
-        toJSON Output'{..}
-          = object
-              (catMaybes
-                 [("LambdaOutput" .=) <$> _oLambdaOutput,
-                  ("KinesisStreamsOutput" .=) <$>
-                    _oKinesisStreamsOutput,
-                  ("KinesisFirehoseOutput" .=) <$>
-                    _oKinesisFirehoseOutput,
-                  Just ("Name" .= _oName),
-                  Just ("DestinationSchema" .= _oDestinationSchema)])
-
--- | Describes the application output configuration, which includes the in-application stream name and the destination where the stream data is written. The destination can be an Amazon Kinesis stream or an Amazon Kinesis Firehose delivery stream.
---
---
---
--- /See:/ 'outputDescription' smart constructor.
-data OutputDescription = OutputDescription'
-  { _odOutputId :: !(Maybe Text)
-  , _odDestinationSchema :: !(Maybe DestinationSchema)
-  , _odKinesisFirehoseOutputDescription :: !(Maybe KinesisFirehoseOutputDescription)
-  , _odKinesisStreamsOutputDescription :: !(Maybe KinesisStreamsOutputDescription)
-  , _odName :: !(Maybe Text)
-  , _odLambdaOutputDescription :: !(Maybe LambdaOutputDescription)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'odOutputId' - A unique identifier for the output configuration.
---
--- * 'odDestinationSchema' - Data format used for writing data to the destination.
---
--- * 'odKinesisFirehoseOutputDescription' - Describes the Amazon Kinesis Firehose delivery stream configured as the destination where output is written.
---
--- * 'odKinesisStreamsOutputDescription' - Describes Amazon Kinesis stream configured as the destination where output is written.
---
--- * 'odName' - Name of the in-application stream configured as output.
---
--- * 'odLambdaOutputDescription' - Describes the AWS Lambda function configured as the destination where output is written.
-outputDescription
-    :: OutputDescription
-outputDescription =
-  OutputDescription'
-    { _odOutputId = Nothing
-    , _odDestinationSchema = Nothing
-    , _odKinesisFirehoseOutputDescription = Nothing
-    , _odKinesisStreamsOutputDescription = Nothing
-    , _odName = Nothing
-    , _odLambdaOutputDescription = Nothing
-    }
-
-
--- | A unique identifier for the output configuration.
-odOutputId :: Lens' OutputDescription (Maybe Text)
-odOutputId = lens _odOutputId (\ s a -> s{_odOutputId = a})
-
--- | Data format used for writing data to the destination.
-odDestinationSchema :: Lens' OutputDescription (Maybe DestinationSchema)
-odDestinationSchema = lens _odDestinationSchema (\ s a -> s{_odDestinationSchema = a})
-
--- | Describes the Amazon Kinesis Firehose delivery stream configured as the destination where output is written.
-odKinesisFirehoseOutputDescription :: Lens' OutputDescription (Maybe KinesisFirehoseOutputDescription)
-odKinesisFirehoseOutputDescription = lens _odKinesisFirehoseOutputDescription (\ s a -> s{_odKinesisFirehoseOutputDescription = a})
-
--- | Describes Amazon Kinesis stream configured as the destination where output is written.
-odKinesisStreamsOutputDescription :: Lens' OutputDescription (Maybe KinesisStreamsOutputDescription)
-odKinesisStreamsOutputDescription = lens _odKinesisStreamsOutputDescription (\ s a -> s{_odKinesisStreamsOutputDescription = a})
-
--- | Name of the in-application stream configured as output.
-odName :: Lens' OutputDescription (Maybe Text)
-odName = lens _odName (\ s a -> s{_odName = a})
-
--- | Describes the AWS Lambda function configured as the destination where output is written.
-odLambdaOutputDescription :: Lens' OutputDescription (Maybe LambdaOutputDescription)
-odLambdaOutputDescription = lens _odLambdaOutputDescription (\ s a -> s{_odLambdaOutputDescription = a})
-
-instance FromJSON OutputDescription where
-        parseJSON
-          = withObject "OutputDescription"
-              (\ x ->
-                 OutputDescription' <$>
-                   (x .:? "OutputId") <*> (x .:? "DestinationSchema")
-                     <*> (x .:? "KinesisFirehoseOutputDescription")
-                     <*> (x .:? "KinesisStreamsOutputDescription")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "LambdaOutputDescription"))
-
-instance Hashable OutputDescription where
-
-instance NFData OutputDescription where
-
--- | Describes updates to the output configuration identified by the @OutputId@ .
---
---
---
--- /See:/ 'outputUpdate' smart constructor.
-data OutputUpdate = OutputUpdate'
-  { _ouKinesisStreamsOutputUpdate  :: !(Maybe KinesisStreamsOutputUpdate)
-  , _ouDestinationSchemaUpdate     :: !(Maybe DestinationSchema)
-  , _ouKinesisFirehoseOutputUpdate :: !(Maybe KinesisFirehoseOutputUpdate)
-  , _ouNameUpdate                  :: !(Maybe Text)
-  , _ouLambdaOutputUpdate          :: !(Maybe LambdaOutputUpdate)
-  , _ouOutputId                    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ouKinesisStreamsOutputUpdate' - Describes an Amazon Kinesis stream as the destination for the output.
---
--- * 'ouDestinationSchemaUpdate' - Describes the data format when records are written to the destination. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
---
--- * 'ouKinesisFirehoseOutputUpdate' - Describes an Amazon Kinesis Firehose delivery stream as the destination for the output.
---
--- * 'ouNameUpdate' - If you want to specify a different in-application stream for this output configuration, use this field to specify the new in-application stream name.
---
--- * 'ouLambdaOutputUpdate' - Describes an AWS Lambda function as the destination for the output.
---
--- * 'ouOutputId' - Identifies the specific output configuration that you want to update.
-outputUpdate
-    :: Text -- ^ 'ouOutputId'
-    -> OutputUpdate
-outputUpdate pOutputId_ =
-  OutputUpdate'
-    { _ouKinesisStreamsOutputUpdate = Nothing
-    , _ouDestinationSchemaUpdate = Nothing
-    , _ouKinesisFirehoseOutputUpdate = Nothing
-    , _ouNameUpdate = Nothing
-    , _ouLambdaOutputUpdate = Nothing
-    , _ouOutputId = pOutputId_
-    }
-
-
--- | Describes an Amazon Kinesis stream as the destination for the output.
-ouKinesisStreamsOutputUpdate :: Lens' OutputUpdate (Maybe KinesisStreamsOutputUpdate)
-ouKinesisStreamsOutputUpdate = lens _ouKinesisStreamsOutputUpdate (\ s a -> s{_ouKinesisStreamsOutputUpdate = a})
-
--- | Describes the data format when records are written to the destination. For more information, see <http://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-output.html Configuring Application Output> .
-ouDestinationSchemaUpdate :: Lens' OutputUpdate (Maybe DestinationSchema)
-ouDestinationSchemaUpdate = lens _ouDestinationSchemaUpdate (\ s a -> s{_ouDestinationSchemaUpdate = a})
-
--- | Describes an Amazon Kinesis Firehose delivery stream as the destination for the output.
-ouKinesisFirehoseOutputUpdate :: Lens' OutputUpdate (Maybe KinesisFirehoseOutputUpdate)
-ouKinesisFirehoseOutputUpdate = lens _ouKinesisFirehoseOutputUpdate (\ s a -> s{_ouKinesisFirehoseOutputUpdate = a})
-
--- | If you want to specify a different in-application stream for this output configuration, use this field to specify the new in-application stream name.
-ouNameUpdate :: Lens' OutputUpdate (Maybe Text)
-ouNameUpdate = lens _ouNameUpdate (\ s a -> s{_ouNameUpdate = a})
-
--- | Describes an AWS Lambda function as the destination for the output.
-ouLambdaOutputUpdate :: Lens' OutputUpdate (Maybe LambdaOutputUpdate)
-ouLambdaOutputUpdate = lens _ouLambdaOutputUpdate (\ s a -> s{_ouLambdaOutputUpdate = a})
-
--- | Identifies the specific output configuration that you want to update.
-ouOutputId :: Lens' OutputUpdate Text
-ouOutputId = lens _ouOutputId (\ s a -> s{_ouOutputId = a})
-
-instance Hashable OutputUpdate where
-
-instance NFData OutputUpdate where
-
-instance ToJSON OutputUpdate where
-        toJSON OutputUpdate'{..}
-          = object
-              (catMaybes
-                 [("KinesisStreamsOutputUpdate" .=) <$>
-                    _ouKinesisStreamsOutputUpdate,
-                  ("DestinationSchemaUpdate" .=) <$>
-                    _ouDestinationSchemaUpdate,
-                  ("KinesisFirehoseOutputUpdate" .=) <$>
-                    _ouKinesisFirehoseOutputUpdate,
-                  ("NameUpdate" .=) <$> _ouNameUpdate,
-                  ("LambdaOutputUpdate" .=) <$> _ouLambdaOutputUpdate,
-                  Just ("OutputId" .= _ouOutputId)])
-
--- | Describes the mapping of each data element in the streaming source to the corresponding column in the in-application stream.
---
---
--- Also used to describe the format of the reference data source.
---
---
--- /See:/ 'recordColumn' smart constructor.
-data RecordColumn = RecordColumn'
-  { _rcMapping :: !(Maybe Text)
-  , _rcName    :: !Text
-  , _rcSqlType :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RecordColumn' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcMapping' - Reference to the data element in the streaming input of the reference data source.
---
--- * 'rcName' - Name of the column created in the in-application input stream or reference table.
---
--- * 'rcSqlType' - Type of column created in the in-application input stream or reference table.
-recordColumn
-    :: Text -- ^ 'rcName'
-    -> Text -- ^ 'rcSqlType'
-    -> RecordColumn
-recordColumn pName_ pSqlType_ =
-  RecordColumn' {_rcMapping = Nothing, _rcName = pName_, _rcSqlType = pSqlType_}
-
-
--- | Reference to the data element in the streaming input of the reference data source.
-rcMapping :: Lens' RecordColumn (Maybe Text)
-rcMapping = lens _rcMapping (\ s a -> s{_rcMapping = a})
-
--- | Name of the column created in the in-application input stream or reference table.
-rcName :: Lens' RecordColumn Text
-rcName = lens _rcName (\ s a -> s{_rcName = a})
-
--- | Type of column created in the in-application input stream or reference table.
-rcSqlType :: Lens' RecordColumn Text
-rcSqlType = lens _rcSqlType (\ s a -> s{_rcSqlType = a})
-
-instance FromJSON RecordColumn where
-        parseJSON
-          = withObject "RecordColumn"
-              (\ x ->
-                 RecordColumn' <$>
-                   (x .:? "Mapping") <*> (x .: "Name") <*>
-                     (x .: "SqlType"))
-
-instance Hashable RecordColumn where
-
-instance NFData RecordColumn where
-
-instance ToJSON RecordColumn where
-        toJSON RecordColumn'{..}
-          = object
-              (catMaybes
-                 [("Mapping" .=) <$> _rcMapping,
-                  Just ("Name" .= _rcName),
-                  Just ("SqlType" .= _rcSqlType)])
-
--- | Describes the record format and relevant mapping information that should be applied to schematize the records on the stream.
---
---
---
--- /See:/ 'recordFormat' smart constructor.
-data RecordFormat = RecordFormat'
-  { _rfMappingParameters :: !(Maybe MappingParameters)
-  , _rfRecordFormatType  :: !RecordFormatType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RecordFormat' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rfMappingParameters' - When configuring application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.
---
--- * 'rfRecordFormatType' - The type of record format.
-recordFormat
-    :: RecordFormatType -- ^ 'rfRecordFormatType'
-    -> RecordFormat
-recordFormat pRecordFormatType_ =
-  RecordFormat'
-    {_rfMappingParameters = Nothing, _rfRecordFormatType = pRecordFormatType_}
-
-
--- | When configuring application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.
-rfMappingParameters :: Lens' RecordFormat (Maybe MappingParameters)
-rfMappingParameters = lens _rfMappingParameters (\ s a -> s{_rfMappingParameters = a})
-
--- | The type of record format.
-rfRecordFormatType :: Lens' RecordFormat RecordFormatType
-rfRecordFormatType = lens _rfRecordFormatType (\ s a -> s{_rfRecordFormatType = a})
-
-instance FromJSON RecordFormat where
-        parseJSON
-          = withObject "RecordFormat"
-              (\ x ->
-                 RecordFormat' <$>
-                   (x .:? "MappingParameters") <*>
-                     (x .: "RecordFormatType"))
-
-instance Hashable RecordFormat where
-
-instance NFData RecordFormat where
-
-instance ToJSON RecordFormat where
-        toJSON RecordFormat'{..}
-          = object
-              (catMaybes
-                 [("MappingParameters" .=) <$> _rfMappingParameters,
-                  Just ("RecordFormatType" .= _rfRecordFormatType)])
-
--- | Describes the reference data source by providing the source information (S3 bucket name and object key name), the resulting in-application table name that is created, and the necessary schema to map the data elements in the Amazon S3 object to the in-application table.
---
---
---
--- /See:/ 'referenceDataSource' smart constructor.
-data ReferenceDataSource = ReferenceDataSource'
-  { _rdsS3ReferenceDataSource :: !(Maybe S3ReferenceDataSource)
-  , _rdsTableName             :: !Text
-  , _rdsReferenceSchema       :: !SourceSchema
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReferenceDataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdsS3ReferenceDataSource' - Identifies the S3 bucket and object that contains the reference data. Also identifies the IAM role Amazon Kinesis Analytics can assume to read this object on your behalf. An Amazon Kinesis Analytics application loads reference data only once. If the data changes, you call the 'UpdateApplication' operation to trigger reloading of data into your application.
---
--- * 'rdsTableName' - Name of the in-application table to create.
---
--- * 'rdsReferenceSchema' - Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
-referenceDataSource
-    :: Text -- ^ 'rdsTableName'
-    -> SourceSchema -- ^ 'rdsReferenceSchema'
-    -> ReferenceDataSource
-referenceDataSource pTableName_ pReferenceSchema_ =
-  ReferenceDataSource'
-    { _rdsS3ReferenceDataSource = Nothing
-    , _rdsTableName = pTableName_
-    , _rdsReferenceSchema = pReferenceSchema_
-    }
-
-
--- | Identifies the S3 bucket and object that contains the reference data. Also identifies the IAM role Amazon Kinesis Analytics can assume to read this object on your behalf. An Amazon Kinesis Analytics application loads reference data only once. If the data changes, you call the 'UpdateApplication' operation to trigger reloading of data into your application.
-rdsS3ReferenceDataSource :: Lens' ReferenceDataSource (Maybe S3ReferenceDataSource)
-rdsS3ReferenceDataSource = lens _rdsS3ReferenceDataSource (\ s a -> s{_rdsS3ReferenceDataSource = a})
-
--- | Name of the in-application table to create.
-rdsTableName :: Lens' ReferenceDataSource Text
-rdsTableName = lens _rdsTableName (\ s a -> s{_rdsTableName = a})
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
-rdsReferenceSchema :: Lens' ReferenceDataSource SourceSchema
-rdsReferenceSchema = lens _rdsReferenceSchema (\ s a -> s{_rdsReferenceSchema = a})
-
-instance Hashable ReferenceDataSource where
-
-instance NFData ReferenceDataSource where
-
-instance ToJSON ReferenceDataSource where
-        toJSON ReferenceDataSource'{..}
-          = object
-              (catMaybes
-                 [("S3ReferenceDataSource" .=) <$>
-                    _rdsS3ReferenceDataSource,
-                  Just ("TableName" .= _rdsTableName),
-                  Just ("ReferenceSchema" .= _rdsReferenceSchema)])
-
--- | Describes the reference data source configured for an application.
---
---
---
--- /See:/ 'referenceDataSourceDescription' smart constructor.
-data ReferenceDataSourceDescription = ReferenceDataSourceDescription'
-  { _rdsdReferenceSchema                  :: !(Maybe SourceSchema)
-  , _rdsdReferenceId                      :: !Text
-  , _rdsdTableName                        :: !Text
-  , _rdsdS3ReferenceDataSourceDescription :: !S3ReferenceDataSourceDescription
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReferenceDataSourceDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdsdReferenceSchema' - Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
---
--- * 'rdsdReferenceId' - ID of the reference data source. This is the ID that Amazon Kinesis Analytics assigns when you add the reference data source to your application using the 'AddApplicationReferenceDataSource' operation.
---
--- * 'rdsdTableName' - The in-application table name created by the specific reference data source configuration.
---
--- * 'rdsdS3ReferenceDataSourceDescription' - Provides the S3 bucket name, the object key name that contains the reference data. It also provides the Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application reference table.
-referenceDataSourceDescription
-    :: Text -- ^ 'rdsdReferenceId'
-    -> Text -- ^ 'rdsdTableName'
-    -> S3ReferenceDataSourceDescription -- ^ 'rdsdS3ReferenceDataSourceDescription'
-    -> ReferenceDataSourceDescription
-referenceDataSourceDescription pReferenceId_ pTableName_ pS3ReferenceDataSourceDescription_ =
-  ReferenceDataSourceDescription'
-    { _rdsdReferenceSchema = Nothing
-    , _rdsdReferenceId = pReferenceId_
-    , _rdsdTableName = pTableName_
-    , _rdsdS3ReferenceDataSourceDescription = pS3ReferenceDataSourceDescription_
-    }
-
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
-rdsdReferenceSchema :: Lens' ReferenceDataSourceDescription (Maybe SourceSchema)
-rdsdReferenceSchema = lens _rdsdReferenceSchema (\ s a -> s{_rdsdReferenceSchema = a})
-
--- | ID of the reference data source. This is the ID that Amazon Kinesis Analytics assigns when you add the reference data source to your application using the 'AddApplicationReferenceDataSource' operation.
-rdsdReferenceId :: Lens' ReferenceDataSourceDescription Text
-rdsdReferenceId = lens _rdsdReferenceId (\ s a -> s{_rdsdReferenceId = a})
-
--- | The in-application table name created by the specific reference data source configuration.
-rdsdTableName :: Lens' ReferenceDataSourceDescription Text
-rdsdTableName = lens _rdsdTableName (\ s a -> s{_rdsdTableName = a})
-
--- | Provides the S3 bucket name, the object key name that contains the reference data. It also provides the Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application reference table.
-rdsdS3ReferenceDataSourceDescription :: Lens' ReferenceDataSourceDescription S3ReferenceDataSourceDescription
-rdsdS3ReferenceDataSourceDescription = lens _rdsdS3ReferenceDataSourceDescription (\ s a -> s{_rdsdS3ReferenceDataSourceDescription = a})
-
-instance FromJSON ReferenceDataSourceDescription
-         where
-        parseJSON
-          = withObject "ReferenceDataSourceDescription"
-              (\ x ->
-                 ReferenceDataSourceDescription' <$>
-                   (x .:? "ReferenceSchema") <*> (x .: "ReferenceId")
-                     <*> (x .: "TableName")
-                     <*> (x .: "S3ReferenceDataSourceDescription"))
-
-instance Hashable ReferenceDataSourceDescription
-         where
-
-instance NFData ReferenceDataSourceDescription where
-
--- | When you update a reference data source configuration for an application, this object provides all the updated values (such as the source bucket name and object key name), the in-application table name that is created, and updated mapping information that maps the data in the Amazon S3 object to the in-application reference table that is created.
---
---
---
--- /See:/ 'referenceDataSourceUpdate' smart constructor.
-data ReferenceDataSourceUpdate = ReferenceDataSourceUpdate'
-  { _rdsuTableNameUpdate             :: !(Maybe Text)
-  , _rdsuS3ReferenceDataSourceUpdate :: !(Maybe S3ReferenceDataSourceUpdate)
-  , _rdsuReferenceSchemaUpdate       :: !(Maybe SourceSchema)
-  , _rdsuReferenceId                 :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReferenceDataSourceUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdsuTableNameUpdate' - In-application table name that is created by this update.
---
--- * 'rdsuS3ReferenceDataSourceUpdate' - Describes the S3 bucket name, object key name, and IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf and populate the in-application reference table.
---
--- * 'rdsuReferenceSchemaUpdate' - Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
---
--- * 'rdsuReferenceId' - ID of the reference data source being updated. You can use the 'DescribeApplication' operation to get this value.
-referenceDataSourceUpdate
-    :: Text -- ^ 'rdsuReferenceId'
-    -> ReferenceDataSourceUpdate
-referenceDataSourceUpdate pReferenceId_ =
-  ReferenceDataSourceUpdate'
-    { _rdsuTableNameUpdate = Nothing
-    , _rdsuS3ReferenceDataSourceUpdate = Nothing
-    , _rdsuReferenceSchemaUpdate = Nothing
-    , _rdsuReferenceId = pReferenceId_
-    }
-
-
--- | In-application table name that is created by this update.
-rdsuTableNameUpdate :: Lens' ReferenceDataSourceUpdate (Maybe Text)
-rdsuTableNameUpdate = lens _rdsuTableNameUpdate (\ s a -> s{_rdsuTableNameUpdate = a})
-
--- | Describes the S3 bucket name, object key name, and IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf and populate the in-application reference table.
-rdsuS3ReferenceDataSourceUpdate :: Lens' ReferenceDataSourceUpdate (Maybe S3ReferenceDataSourceUpdate)
-rdsuS3ReferenceDataSourceUpdate = lens _rdsuS3ReferenceDataSourceUpdate (\ s a -> s{_rdsuS3ReferenceDataSourceUpdate = a})
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
-rdsuReferenceSchemaUpdate :: Lens' ReferenceDataSourceUpdate (Maybe SourceSchema)
-rdsuReferenceSchemaUpdate = lens _rdsuReferenceSchemaUpdate (\ s a -> s{_rdsuReferenceSchemaUpdate = a})
-
--- | ID of the reference data source being updated. You can use the 'DescribeApplication' operation to get this value.
-rdsuReferenceId :: Lens' ReferenceDataSourceUpdate Text
-rdsuReferenceId = lens _rdsuReferenceId (\ s a -> s{_rdsuReferenceId = a})
-
-instance Hashable ReferenceDataSourceUpdate where
-
-instance NFData ReferenceDataSourceUpdate where
-
-instance ToJSON ReferenceDataSourceUpdate where
-        toJSON ReferenceDataSourceUpdate'{..}
-          = object
-              (catMaybes
-                 [("TableNameUpdate" .=) <$> _rdsuTableNameUpdate,
-                  ("S3ReferenceDataSourceUpdate" .=) <$>
-                    _rdsuS3ReferenceDataSourceUpdate,
-                  ("ReferenceSchemaUpdate" .=) <$>
-                    _rdsuReferenceSchemaUpdate,
-                  Just ("ReferenceId" .= _rdsuReferenceId)])
-
--- | Provides a description of an Amazon S3 data source, including the Amazon Resource Name (ARN) of the S3 bucket, the ARN of the IAM role that is used to access the bucket, and the name of the S3 object that contains the data.
---
---
---
--- /See:/ 's3Configuration' smart constructor.
-data S3Configuration = S3Configuration'
-  { _scRoleARN   :: !Text
-  , _scBucketARN :: !Text
-  , _scFileKey   :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'S3Configuration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scRoleARN' - IAM ARN of the role used to access the data.
---
--- * 'scBucketARN' - ARN of the S3 bucket that contains the data.
---
--- * 'scFileKey' - The name of the object that contains the data.
-s3Configuration
-    :: Text -- ^ 'scRoleARN'
-    -> Text -- ^ 'scBucketARN'
-    -> Text -- ^ 'scFileKey'
-    -> S3Configuration
-s3Configuration pRoleARN_ pBucketARN_ pFileKey_ =
-  S3Configuration'
-    {_scRoleARN = pRoleARN_, _scBucketARN = pBucketARN_, _scFileKey = pFileKey_}
-
-
--- | IAM ARN of the role used to access the data.
-scRoleARN :: Lens' S3Configuration Text
-scRoleARN = lens _scRoleARN (\ s a -> s{_scRoleARN = a})
-
--- | ARN of the S3 bucket that contains the data.
-scBucketARN :: Lens' S3Configuration Text
-scBucketARN = lens _scBucketARN (\ s a -> s{_scBucketARN = a})
-
--- | The name of the object that contains the data.
-scFileKey :: Lens' S3Configuration Text
-scFileKey = lens _scFileKey (\ s a -> s{_scFileKey = a})
-
-instance Hashable S3Configuration where
-
-instance NFData S3Configuration where
-
-instance ToJSON S3Configuration where
-        toJSON S3Configuration'{..}
-          = object
-              (catMaybes
-                 [Just ("RoleARN" .= _scRoleARN),
-                  Just ("BucketARN" .= _scBucketARN),
-                  Just ("FileKey" .= _scFileKey)])
-
--- | Identifies the S3 bucket and object that contains the reference data. Also identifies the IAM role Amazon Kinesis Analytics can assume to read this object on your behalf.
---
---
--- An Amazon Kinesis Analytics application loads reference data only once. If the data changes, you call the 'UpdateApplication' operation to trigger reloading of data into your application.
---
---
--- /See:/ 's3ReferenceDataSource' smart constructor.
-data S3ReferenceDataSource = S3ReferenceDataSource'
-  { _srdsBucketARN        :: !Text
-  , _srdsFileKey          :: !Text
-  , _srdsReferenceRoleARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'S3ReferenceDataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srdsBucketARN' - Amazon Resource Name (ARN) of the S3 bucket.
---
--- * 'srdsFileKey' - Object key name containing reference data.
---
--- * 'srdsReferenceRoleARN' - ARN of the IAM role that the service can assume to read data on your behalf. This role must have permission for the @s3:GetObject@ action on the object and trust policy that allows Amazon Kinesis Analytics service principal to assume this role.
-s3ReferenceDataSource
-    :: Text -- ^ 'srdsBucketARN'
-    -> Text -- ^ 'srdsFileKey'
-    -> Text -- ^ 'srdsReferenceRoleARN'
-    -> S3ReferenceDataSource
-s3ReferenceDataSource pBucketARN_ pFileKey_ pReferenceRoleARN_ =
-  S3ReferenceDataSource'
-    { _srdsBucketARN = pBucketARN_
-    , _srdsFileKey = pFileKey_
-    , _srdsReferenceRoleARN = pReferenceRoleARN_
-    }
-
-
--- | Amazon Resource Name (ARN) of the S3 bucket.
-srdsBucketARN :: Lens' S3ReferenceDataSource Text
-srdsBucketARN = lens _srdsBucketARN (\ s a -> s{_srdsBucketARN = a})
-
--- | Object key name containing reference data.
-srdsFileKey :: Lens' S3ReferenceDataSource Text
-srdsFileKey = lens _srdsFileKey (\ s a -> s{_srdsFileKey = a})
-
--- | ARN of the IAM role that the service can assume to read data on your behalf. This role must have permission for the @s3:GetObject@ action on the object and trust policy that allows Amazon Kinesis Analytics service principal to assume this role.
-srdsReferenceRoleARN :: Lens' S3ReferenceDataSource Text
-srdsReferenceRoleARN = lens _srdsReferenceRoleARN (\ s a -> s{_srdsReferenceRoleARN = a})
-
-instance Hashable S3ReferenceDataSource where
-
-instance NFData S3ReferenceDataSource where
-
-instance ToJSON S3ReferenceDataSource where
-        toJSON S3ReferenceDataSource'{..}
-          = object
-              (catMaybes
-                 [Just ("BucketARN" .= _srdsBucketARN),
-                  Just ("FileKey" .= _srdsFileKey),
-                  Just ("ReferenceRoleARN" .= _srdsReferenceRoleARN)])
-
--- | Provides the bucket name and object key name that stores the reference data.
---
---
---
--- /See:/ 's3ReferenceDataSourceDescription' smart constructor.
-data S3ReferenceDataSourceDescription = S3ReferenceDataSourceDescription'
-  { _srdsdBucketARN        :: !Text
-  , _srdsdFileKey          :: !Text
-  , _srdsdReferenceRoleARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'S3ReferenceDataSourceDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srdsdBucketARN' - Amazon Resource Name (ARN) of the S3 bucket.
---
--- * 'srdsdFileKey' - Amazon S3 object key name.
---
--- * 'srdsdReferenceRoleARN' - ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf to populate the in-application reference table.
-s3ReferenceDataSourceDescription
-    :: Text -- ^ 'srdsdBucketARN'
-    -> Text -- ^ 'srdsdFileKey'
-    -> Text -- ^ 'srdsdReferenceRoleARN'
-    -> S3ReferenceDataSourceDescription
-s3ReferenceDataSourceDescription pBucketARN_ pFileKey_ pReferenceRoleARN_ =
-  S3ReferenceDataSourceDescription'
-    { _srdsdBucketARN = pBucketARN_
-    , _srdsdFileKey = pFileKey_
-    , _srdsdReferenceRoleARN = pReferenceRoleARN_
-    }
-
-
--- | Amazon Resource Name (ARN) of the S3 bucket.
-srdsdBucketARN :: Lens' S3ReferenceDataSourceDescription Text
-srdsdBucketARN = lens _srdsdBucketARN (\ s a -> s{_srdsdBucketARN = a})
-
--- | Amazon S3 object key name.
-srdsdFileKey :: Lens' S3ReferenceDataSourceDescription Text
-srdsdFileKey = lens _srdsdFileKey (\ s a -> s{_srdsdFileKey = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf to populate the in-application reference table.
-srdsdReferenceRoleARN :: Lens' S3ReferenceDataSourceDescription Text
-srdsdReferenceRoleARN = lens _srdsdReferenceRoleARN (\ s a -> s{_srdsdReferenceRoleARN = a})
-
-instance FromJSON S3ReferenceDataSourceDescription
-         where
-        parseJSON
-          = withObject "S3ReferenceDataSourceDescription"
-              (\ x ->
-                 S3ReferenceDataSourceDescription' <$>
-                   (x .: "BucketARN") <*> (x .: "FileKey") <*>
-                     (x .: "ReferenceRoleARN"))
-
-instance Hashable S3ReferenceDataSourceDescription
-         where
-
-instance NFData S3ReferenceDataSourceDescription
-         where
-
--- | Describes the S3 bucket name, object key name, and IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object on your behalf and populate the in-application reference table.
---
---
---
--- /See:/ 's3ReferenceDataSourceUpdate' smart constructor.
-data S3ReferenceDataSourceUpdate = S3ReferenceDataSourceUpdate'
-  { _srdsuBucketARNUpdate        :: !(Maybe Text)
-  , _srdsuFileKeyUpdate          :: !(Maybe Text)
-  , _srdsuReferenceRoleARNUpdate :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'S3ReferenceDataSourceUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srdsuBucketARNUpdate' - Amazon Resource Name (ARN) of the S3 bucket.
---
--- * 'srdsuFileKeyUpdate' - Object key name.
---
--- * 'srdsuReferenceRoleARNUpdate' - ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application.
-s3ReferenceDataSourceUpdate
-    :: S3ReferenceDataSourceUpdate
-s3ReferenceDataSourceUpdate =
-  S3ReferenceDataSourceUpdate'
-    { _srdsuBucketARNUpdate = Nothing
-    , _srdsuFileKeyUpdate = Nothing
-    , _srdsuReferenceRoleARNUpdate = Nothing
-    }
-
-
--- | Amazon Resource Name (ARN) of the S3 bucket.
-srdsuBucketARNUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)
-srdsuBucketARNUpdate = lens _srdsuBucketARNUpdate (\ s a -> s{_srdsuBucketARNUpdate = a})
-
--- | Object key name.
-srdsuFileKeyUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)
-srdsuFileKeyUpdate = lens _srdsuFileKeyUpdate (\ s a -> s{_srdsuFileKeyUpdate = a})
-
--- | ARN of the IAM role that Amazon Kinesis Analytics can assume to read the Amazon S3 object and populate the in-application.
-srdsuReferenceRoleARNUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)
-srdsuReferenceRoleARNUpdate = lens _srdsuReferenceRoleARNUpdate (\ s a -> s{_srdsuReferenceRoleARNUpdate = a})
-
-instance Hashable S3ReferenceDataSourceUpdate where
-
-instance NFData S3ReferenceDataSourceUpdate where
-
-instance ToJSON S3ReferenceDataSourceUpdate where
-        toJSON S3ReferenceDataSourceUpdate'{..}
-          = object
-              (catMaybes
-                 [("BucketARNUpdate" .=) <$> _srdsuBucketARNUpdate,
-                  ("FileKeyUpdate" .=) <$> _srdsuFileKeyUpdate,
-                  ("ReferenceRoleARNUpdate" .=) <$>
-                    _srdsuReferenceRoleARNUpdate])
-
--- | Describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.
---
---
---
--- /See:/ 'sourceSchema' smart constructor.
-data SourceSchema = SourceSchema'
-  { _ssRecordEncoding :: !(Maybe Text)
-  , _ssRecordFormat   :: !RecordFormat
-  , _ssRecordColumns  :: !(List1 RecordColumn)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SourceSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssRecordEncoding' - Specifies the encoding of the records in the streaming source. For example, UTF-8.
---
--- * 'ssRecordFormat' - Specifies the format of the records on the streaming source.
---
--- * 'ssRecordColumns' - A list of @RecordColumn@ objects.
-sourceSchema
-    :: RecordFormat -- ^ 'ssRecordFormat'
-    -> NonEmpty RecordColumn -- ^ 'ssRecordColumns'
-    -> SourceSchema
-sourceSchema pRecordFormat_ pRecordColumns_ =
-  SourceSchema'
-    { _ssRecordEncoding = Nothing
-    , _ssRecordFormat = pRecordFormat_
-    , _ssRecordColumns = _List1 # pRecordColumns_
-    }
-
-
--- | Specifies the encoding of the records in the streaming source. For example, UTF-8.
-ssRecordEncoding :: Lens' SourceSchema (Maybe Text)
-ssRecordEncoding = lens _ssRecordEncoding (\ s a -> s{_ssRecordEncoding = a})
-
--- | Specifies the format of the records on the streaming source.
-ssRecordFormat :: Lens' SourceSchema RecordFormat
-ssRecordFormat = lens _ssRecordFormat (\ s a -> s{_ssRecordFormat = a})
-
--- | A list of @RecordColumn@ objects.
-ssRecordColumns :: Lens' SourceSchema (NonEmpty RecordColumn)
-ssRecordColumns = lens _ssRecordColumns (\ s a -> s{_ssRecordColumns = a}) . _List1
-
-instance FromJSON SourceSchema where
-        parseJSON
-          = withObject "SourceSchema"
-              (\ x ->
-                 SourceSchema' <$>
-                   (x .:? "RecordEncoding") <*> (x .: "RecordFormat")
-                     <*> (x .: "RecordColumns"))
-
-instance Hashable SourceSchema where
-
-instance NFData SourceSchema where
-
-instance ToJSON SourceSchema where
-        toJSON SourceSchema'{..}
-          = object
-              (catMaybes
-                 [("RecordEncoding" .=) <$> _ssRecordEncoding,
-                  Just ("RecordFormat" .= _ssRecordFormat),
-                  Just ("RecordColumns" .= _ssRecordColumns)])
diff --git a/gen/Network/AWS/KinesisAnalytics/Types/Sum.hs b/gen/Network/AWS/KinesisAnalytics/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/Types/Sum.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.KinesisAnalytics.Types.Sum where
-
-import Network.AWS.Prelude
-
-data ApplicationStatus
-  = Deleting
-  | Ready
-  | Running
-  | Starting
-  | Stopping
-  | Updating
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ApplicationStatus where
-    parser = takeLowerText >>= \case
-        "deleting" -> pure Deleting
-        "ready" -> pure Ready
-        "running" -> pure Running
-        "starting" -> pure Starting
-        "stopping" -> pure Stopping
-        "updating" -> pure Updating
-        e -> fromTextError $ "Failure parsing ApplicationStatus from value: '" <> e
-           <> "'. Accepted values: deleting, ready, running, starting, stopping, updating"
-
-instance ToText ApplicationStatus where
-    toText = \case
-        Deleting -> "DELETING"
-        Ready -> "READY"
-        Running -> "RUNNING"
-        Starting -> "STARTING"
-        Stopping -> "STOPPING"
-        Updating -> "UPDATING"
-
-instance Hashable     ApplicationStatus
-instance NFData       ApplicationStatus
-instance ToByteString ApplicationStatus
-instance ToQuery      ApplicationStatus
-instance ToHeader     ApplicationStatus
-
-instance FromJSON ApplicationStatus where
-    parseJSON = parseJSONText "ApplicationStatus"
-
-data InputStartingPosition
-  = LastStoppedPoint
-  | Now
-  | TrimHorizon
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputStartingPosition where
-    parser = takeLowerText >>= \case
-        "last_stopped_point" -> pure LastStoppedPoint
-        "now" -> pure Now
-        "trim_horizon" -> pure TrimHorizon
-        e -> fromTextError $ "Failure parsing InputStartingPosition from value: '" <> e
-           <> "'. Accepted values: last_stopped_point, now, trim_horizon"
-
-instance ToText InputStartingPosition where
-    toText = \case
-        LastStoppedPoint -> "LAST_STOPPED_POINT"
-        Now -> "NOW"
-        TrimHorizon -> "TRIM_HORIZON"
-
-instance Hashable     InputStartingPosition
-instance NFData       InputStartingPosition
-instance ToByteString InputStartingPosition
-instance ToQuery      InputStartingPosition
-instance ToHeader     InputStartingPosition
-
-instance ToJSON InputStartingPosition where
-    toJSON = toJSONText
-
-instance FromJSON InputStartingPosition where
-    parseJSON = parseJSONText "InputStartingPosition"
-
-data RecordFormatType
-  = CSV
-  | JSON
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText RecordFormatType where
-    parser = takeLowerText >>= \case
-        "csv" -> pure CSV
-        "json" -> pure JSON
-        e -> fromTextError $ "Failure parsing RecordFormatType from value: '" <> e
-           <> "'. Accepted values: csv, json"
-
-instance ToText RecordFormatType where
-    toText = \case
-        CSV -> "CSV"
-        JSON -> "JSON"
-
-instance Hashable     RecordFormatType
-instance NFData       RecordFormatType
-instance ToByteString RecordFormatType
-instance ToQuery      RecordFormatType
-instance ToHeader     RecordFormatType
-
-instance ToJSON RecordFormatType where
-    toJSON = toJSONText
-
-instance FromJSON RecordFormatType where
-    parseJSON = parseJSONText "RecordFormatType"
diff --git a/gen/Network/AWS/KinesisAnalytics/UpdateApplication.hs b/gen/Network/AWS/KinesisAnalytics/UpdateApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/UpdateApplication.hs
+++ /dev/null
@@ -1,154 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.UpdateApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates an existing Amazon Kinesis Analytics application. Using this API, you can update application code, input configuration, and output configuration.
---
---
--- Note that Amazon Kinesis Analytics updates the @CurrentApplicationVersionId@ each time you update your application.
---
--- This operation requires permission for the @kinesisanalytics:UpdateApplication@ action.
---
-module Network.AWS.KinesisAnalytics.UpdateApplication
-    (
-    -- * Creating a Request
-      updateApplication
-    , UpdateApplication
-    -- * Request Lenses
-    , uaApplicationName
-    , uaCurrentApplicationVersionId
-    , uaApplicationUpdate
-
-    -- * Destructuring the Response
-    , updateApplicationResponse
-    , UpdateApplicationResponse
-    -- * Response Lenses
-    , uarsResponseStatus
-    ) where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.KinesisAnalytics.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'updateApplication' smart constructor.
-data UpdateApplication = UpdateApplication'
-  { _uaApplicationName             :: !Text
-  , _uaCurrentApplicationVersionId :: !Nat
-  , _uaApplicationUpdate           :: !ApplicationUpdate
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uaApplicationName' - Name of the Amazon Kinesis Analytics application to update.
---
--- * 'uaCurrentApplicationVersionId' - The current application version ID. You can use the 'DescribeApplication' operation to get this value.
---
--- * 'uaApplicationUpdate' - Describes application updates.
-updateApplication
-    :: Text -- ^ 'uaApplicationName'
-    -> Natural -- ^ 'uaCurrentApplicationVersionId'
-    -> ApplicationUpdate -- ^ 'uaApplicationUpdate'
-    -> UpdateApplication
-updateApplication pApplicationName_ pCurrentApplicationVersionId_ pApplicationUpdate_ =
-  UpdateApplication'
-    { _uaApplicationName = pApplicationName_
-    , _uaCurrentApplicationVersionId = _Nat # pCurrentApplicationVersionId_
-    , _uaApplicationUpdate = pApplicationUpdate_
-    }
-
-
--- | Name of the Amazon Kinesis Analytics application to update.
-uaApplicationName :: Lens' UpdateApplication Text
-uaApplicationName = lens _uaApplicationName (\ s a -> s{_uaApplicationName = a})
-
--- | The current application version ID. You can use the 'DescribeApplication' operation to get this value.
-uaCurrentApplicationVersionId :: Lens' UpdateApplication Natural
-uaCurrentApplicationVersionId = lens _uaCurrentApplicationVersionId (\ s a -> s{_uaCurrentApplicationVersionId = a}) . _Nat
-
--- | Describes application updates.
-uaApplicationUpdate :: Lens' UpdateApplication ApplicationUpdate
-uaApplicationUpdate = lens _uaApplicationUpdate (\ s a -> s{_uaApplicationUpdate = a})
-
-instance AWSRequest UpdateApplication where
-        type Rs UpdateApplication = UpdateApplicationResponse
-        request = postJSON kinesisAnalytics
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 UpdateApplicationResponse' <$> (pure (fromEnum s)))
-
-instance Hashable UpdateApplication where
-
-instance NFData UpdateApplication where
-
-instance ToHeaders UpdateApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("KinesisAnalytics_20150814.UpdateApplication" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateApplication where
-        toJSON UpdateApplication'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationName" .= _uaApplicationName),
-                  Just
-                    ("CurrentApplicationVersionId" .=
-                       _uaCurrentApplicationVersionId),
-                  Just ("ApplicationUpdate" .= _uaApplicationUpdate)])
-
-instance ToPath UpdateApplication where
-        toPath = const "/"
-
-instance ToQuery UpdateApplication where
-        toQuery = const mempty
-
--- | /See:/ 'updateApplicationResponse' smart constructor.
-newtype UpdateApplicationResponse = UpdateApplicationResponse'
-  { _uarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uarsResponseStatus' - -- | The response status code.
-updateApplicationResponse
-    :: Int -- ^ 'uarsResponseStatus'
-    -> UpdateApplicationResponse
-updateApplicationResponse pResponseStatus_ =
-  UpdateApplicationResponse' {_uarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-uarsResponseStatus :: Lens' UpdateApplicationResponse Int
-uarsResponseStatus = lens _uarsResponseStatus (\ s a -> s{_uarsResponseStatus = a})
-
-instance NFData UpdateApplicationResponse where
diff --git a/gen/Network/AWS/KinesisAnalytics/Waiters.hs b/gen/Network/AWS/KinesisAnalytics/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/KinesisAnalytics/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.KinesisAnalytics.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.KinesisAnalytics.Waiters where
-
-import Network.AWS.KinesisAnalytics.Types
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.KinesisAnalytics
+import Test.Amazonka.KinesisAnalytics.Internal
 import Test.Tasty
-import Test.AWS.KinesisAnalytics
-import Test.AWS.KinesisAnalytics.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "KinesisAnalytics"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "KinesisAnalytics"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/KinesisAnalytics.hs b/test/Test/AWS/Gen/KinesisAnalytics.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/KinesisAnalytics.hs
+++ /dev/null
@@ -1,345 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.KinesisAnalytics
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.KinesisAnalytics where
-
-import Data.Proxy
-import Network.AWS.KinesisAnalytics
-import Test.AWS.Fixture
-import Test.AWS.KinesisAnalytics.Internal
-import Test.AWS.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"
---         [ requestAddApplicationOutput $
---             addApplicationOutput
---
---         , requestDiscoverInputSchema $
---             discoverInputSchema
---
---         , requestDescribeApplication $
---             describeApplication
---
---         , requestStartApplication $
---             startApplication
---
---         , requestDeleteApplicationReferenceDataSource $
---             deleteApplicationReferenceDataSource
---
---         , requestDeleteApplication $
---             deleteApplication
---
---         , requestUpdateApplication $
---             updateApplication
---
---         , requestDeleteApplicationCloudWatchLoggingOption $
---             deleteApplicationCloudWatchLoggingOption
---
---         , requestAddApplicationInputProcessingConfiguration $
---             addApplicationInputProcessingConfiguration
---
---         , requestCreateApplication $
---             createApplication
---
---         , requestDeleteApplicationOutput $
---             deleteApplicationOutput
---
---         , requestStopApplication $
---             stopApplication
---
---         , requestAddApplicationReferenceDataSource $
---             addApplicationReferenceDataSource
---
---         , requestAddApplicationInput $
---             addApplicationInput
---
---         , requestAddApplicationCloudWatchLoggingOption $
---             addApplicationCloudWatchLoggingOption
---
---         , requestListApplications $
---             listApplications
---
---         , requestDeleteApplicationInputProcessingConfiguration $
---             deleteApplicationInputProcessingConfiguration
---
---           ]
-
---     , testGroup "response"
---         [ responseAddApplicationOutput $
---             addApplicationOutputResponse
---
---         , responseDiscoverInputSchema $
---             discoverInputSchemaResponse
---
---         , responseDescribeApplication $
---             describeApplicationResponse
---
---         , responseStartApplication $
---             startApplicationResponse
---
---         , responseDeleteApplicationReferenceDataSource $
---             deleteApplicationReferenceDataSourceResponse
---
---         , responseDeleteApplication $
---             deleteApplicationResponse
---
---         , responseUpdateApplication $
---             updateApplicationResponse
---
---         , responseDeleteApplicationCloudWatchLoggingOption $
---             deleteApplicationCloudWatchLoggingOptionResponse
---
---         , responseAddApplicationInputProcessingConfiguration $
---             addApplicationInputProcessingConfigurationResponse
---
---         , responseCreateApplication $
---             createApplicationResponse
---
---         , responseDeleteApplicationOutput $
---             deleteApplicationOutputResponse
---
---         , responseStopApplication $
---             stopApplicationResponse
---
---         , responseAddApplicationReferenceDataSource $
---             addApplicationReferenceDataSourceResponse
---
---         , responseAddApplicationInput $
---             addApplicationInputResponse
---
---         , responseAddApplicationCloudWatchLoggingOption $
---             addApplicationCloudWatchLoggingOptionResponse
---
---         , responseListApplications $
---             listApplicationsResponse
---
---         , responseDeleteApplicationInputProcessingConfiguration $
---             deleteApplicationInputProcessingConfigurationResponse
---
---           ]
---     ]
-
--- Requests
-
-requestAddApplicationOutput :: AddApplicationOutput -> TestTree
-requestAddApplicationOutput = req
-    "AddApplicationOutput"
-    "fixture/AddApplicationOutput.yaml"
-
-requestDiscoverInputSchema :: DiscoverInputSchema -> TestTree
-requestDiscoverInputSchema = req
-    "DiscoverInputSchema"
-    "fixture/DiscoverInputSchema.yaml"
-
-requestDescribeApplication :: DescribeApplication -> TestTree
-requestDescribeApplication = req
-    "DescribeApplication"
-    "fixture/DescribeApplication.yaml"
-
-requestStartApplication :: StartApplication -> TestTree
-requestStartApplication = req
-    "StartApplication"
-    "fixture/StartApplication.yaml"
-
-requestDeleteApplicationReferenceDataSource :: DeleteApplicationReferenceDataSource -> TestTree
-requestDeleteApplicationReferenceDataSource = req
-    "DeleteApplicationReferenceDataSource"
-    "fixture/DeleteApplicationReferenceDataSource.yaml"
-
-requestDeleteApplication :: DeleteApplication -> TestTree
-requestDeleteApplication = req
-    "DeleteApplication"
-    "fixture/DeleteApplication.yaml"
-
-requestUpdateApplication :: UpdateApplication -> TestTree
-requestUpdateApplication = req
-    "UpdateApplication"
-    "fixture/UpdateApplication.yaml"
-
-requestDeleteApplicationCloudWatchLoggingOption :: DeleteApplicationCloudWatchLoggingOption -> TestTree
-requestDeleteApplicationCloudWatchLoggingOption = req
-    "DeleteApplicationCloudWatchLoggingOption"
-    "fixture/DeleteApplicationCloudWatchLoggingOption.yaml"
-
-requestAddApplicationInputProcessingConfiguration :: AddApplicationInputProcessingConfiguration -> TestTree
-requestAddApplicationInputProcessingConfiguration = req
-    "AddApplicationInputProcessingConfiguration"
-    "fixture/AddApplicationInputProcessingConfiguration.yaml"
-
-requestCreateApplication :: CreateApplication -> TestTree
-requestCreateApplication = req
-    "CreateApplication"
-    "fixture/CreateApplication.yaml"
-
-requestDeleteApplicationOutput :: DeleteApplicationOutput -> TestTree
-requestDeleteApplicationOutput = req
-    "DeleteApplicationOutput"
-    "fixture/DeleteApplicationOutput.yaml"
-
-requestStopApplication :: StopApplication -> TestTree
-requestStopApplication = req
-    "StopApplication"
-    "fixture/StopApplication.yaml"
-
-requestAddApplicationReferenceDataSource :: AddApplicationReferenceDataSource -> TestTree
-requestAddApplicationReferenceDataSource = req
-    "AddApplicationReferenceDataSource"
-    "fixture/AddApplicationReferenceDataSource.yaml"
-
-requestAddApplicationInput :: AddApplicationInput -> TestTree
-requestAddApplicationInput = req
-    "AddApplicationInput"
-    "fixture/AddApplicationInput.yaml"
-
-requestAddApplicationCloudWatchLoggingOption :: AddApplicationCloudWatchLoggingOption -> TestTree
-requestAddApplicationCloudWatchLoggingOption = req
-    "AddApplicationCloudWatchLoggingOption"
-    "fixture/AddApplicationCloudWatchLoggingOption.yaml"
-
-requestListApplications :: ListApplications -> TestTree
-requestListApplications = req
-    "ListApplications"
-    "fixture/ListApplications.yaml"
-
-requestDeleteApplicationInputProcessingConfiguration :: DeleteApplicationInputProcessingConfiguration -> TestTree
-requestDeleteApplicationInputProcessingConfiguration = req
-    "DeleteApplicationInputProcessingConfiguration"
-    "fixture/DeleteApplicationInputProcessingConfiguration.yaml"
-
--- Responses
-
-responseAddApplicationOutput :: AddApplicationOutputResponse -> TestTree
-responseAddApplicationOutput = res
-    "AddApplicationOutputResponse"
-    "fixture/AddApplicationOutputResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy AddApplicationOutput)
-
-responseDiscoverInputSchema :: DiscoverInputSchemaResponse -> TestTree
-responseDiscoverInputSchema = res
-    "DiscoverInputSchemaResponse"
-    "fixture/DiscoverInputSchemaResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DiscoverInputSchema)
-
-responseDescribeApplication :: DescribeApplicationResponse -> TestTree
-responseDescribeApplication = res
-    "DescribeApplicationResponse"
-    "fixture/DescribeApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DescribeApplication)
-
-responseStartApplication :: StartApplicationResponse -> TestTree
-responseStartApplication = res
-    "StartApplicationResponse"
-    "fixture/StartApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy StartApplication)
-
-responseDeleteApplicationReferenceDataSource :: DeleteApplicationReferenceDataSourceResponse -> TestTree
-responseDeleteApplicationReferenceDataSource = res
-    "DeleteApplicationReferenceDataSourceResponse"
-    "fixture/DeleteApplicationReferenceDataSourceResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DeleteApplicationReferenceDataSource)
-
-responseDeleteApplication :: DeleteApplicationResponse -> TestTree
-responseDeleteApplication = res
-    "DeleteApplicationResponse"
-    "fixture/DeleteApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DeleteApplication)
-
-responseUpdateApplication :: UpdateApplicationResponse -> TestTree
-responseUpdateApplication = res
-    "UpdateApplicationResponse"
-    "fixture/UpdateApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy UpdateApplication)
-
-responseDeleteApplicationCloudWatchLoggingOption :: DeleteApplicationCloudWatchLoggingOptionResponse -> TestTree
-responseDeleteApplicationCloudWatchLoggingOption = res
-    "DeleteApplicationCloudWatchLoggingOptionResponse"
-    "fixture/DeleteApplicationCloudWatchLoggingOptionResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DeleteApplicationCloudWatchLoggingOption)
-
-responseAddApplicationInputProcessingConfiguration :: AddApplicationInputProcessingConfigurationResponse -> TestTree
-responseAddApplicationInputProcessingConfiguration = res
-    "AddApplicationInputProcessingConfigurationResponse"
-    "fixture/AddApplicationInputProcessingConfigurationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy AddApplicationInputProcessingConfiguration)
-
-responseCreateApplication :: CreateApplicationResponse -> TestTree
-responseCreateApplication = res
-    "CreateApplicationResponse"
-    "fixture/CreateApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy CreateApplication)
-
-responseDeleteApplicationOutput :: DeleteApplicationOutputResponse -> TestTree
-responseDeleteApplicationOutput = res
-    "DeleteApplicationOutputResponse"
-    "fixture/DeleteApplicationOutputResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DeleteApplicationOutput)
-
-responseStopApplication :: StopApplicationResponse -> TestTree
-responseStopApplication = res
-    "StopApplicationResponse"
-    "fixture/StopApplicationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy StopApplication)
-
-responseAddApplicationReferenceDataSource :: AddApplicationReferenceDataSourceResponse -> TestTree
-responseAddApplicationReferenceDataSource = res
-    "AddApplicationReferenceDataSourceResponse"
-    "fixture/AddApplicationReferenceDataSourceResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy AddApplicationReferenceDataSource)
-
-responseAddApplicationInput :: AddApplicationInputResponse -> TestTree
-responseAddApplicationInput = res
-    "AddApplicationInputResponse"
-    "fixture/AddApplicationInputResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy AddApplicationInput)
-
-responseAddApplicationCloudWatchLoggingOption :: AddApplicationCloudWatchLoggingOptionResponse -> TestTree
-responseAddApplicationCloudWatchLoggingOption = res
-    "AddApplicationCloudWatchLoggingOptionResponse"
-    "fixture/AddApplicationCloudWatchLoggingOptionResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy AddApplicationCloudWatchLoggingOption)
-
-responseListApplications :: ListApplicationsResponse -> TestTree
-responseListApplications = res
-    "ListApplicationsResponse"
-    "fixture/ListApplicationsResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy ListApplications)
-
-responseDeleteApplicationInputProcessingConfiguration :: DeleteApplicationInputProcessingConfigurationResponse -> TestTree
-responseDeleteApplicationInputProcessingConfiguration = res
-    "DeleteApplicationInputProcessingConfigurationResponse"
-    "fixture/DeleteApplicationInputProcessingConfigurationResponse.proto"
-    kinesisAnalytics
-    (Proxy :: Proxy DeleteApplicationInputProcessingConfiguration)
diff --git a/test/Test/AWS/KinesisAnalytics.hs b/test/Test/AWS/KinesisAnalytics.hs
deleted file mode 100644
--- a/test/Test/AWS/KinesisAnalytics.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Test.AWS.KinesisAnalytics
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.KinesisAnalytics where
-
-import Test.AWS.Prelude
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/KinesisAnalytics/Internal.hs b/test/Test/AWS/KinesisAnalytics/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/KinesisAnalytics/Internal.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Test.AWS.KinesisAnalytics.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.KinesisAnalytics.Internal where
-
-import Test.AWS.Prelude
diff --git a/test/Test/Amazonka/Gen/KinesisAnalytics.hs b/test/Test/Amazonka/Gen/KinesisAnalytics.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/KinesisAnalytics.hs
@@ -0,0 +1,438 @@
+{-# 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.KinesisAnalytics
+-- Copyright   : (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.KinesisAnalytics where
+
+import Amazonka.KinesisAnalytics
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.KinesisAnalytics.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAddApplicationCloudWatchLoggingOption $
+--             newAddApplicationCloudWatchLoggingOption
+--
+--         , requestAddApplicationInput $
+--             newAddApplicationInput
+--
+--         , requestAddApplicationInputProcessingConfiguration $
+--             newAddApplicationInputProcessingConfiguration
+--
+--         , requestAddApplicationOutput $
+--             newAddApplicationOutput
+--
+--         , requestAddApplicationReferenceDataSource $
+--             newAddApplicationReferenceDataSource
+--
+--         , requestCreateApplication $
+--             newCreateApplication
+--
+--         , requestDeleteApplication $
+--             newDeleteApplication
+--
+--         , requestDeleteApplicationCloudWatchLoggingOption $
+--             newDeleteApplicationCloudWatchLoggingOption
+--
+--         , requestDeleteApplicationInputProcessingConfiguration $
+--             newDeleteApplicationInputProcessingConfiguration
+--
+--         , requestDeleteApplicationOutput $
+--             newDeleteApplicationOutput
+--
+--         , requestDeleteApplicationReferenceDataSource $
+--             newDeleteApplicationReferenceDataSource
+--
+--         , requestDescribeApplication $
+--             newDescribeApplication
+--
+--         , requestDiscoverInputSchema $
+--             newDiscoverInputSchema
+--
+--         , requestListApplications $
+--             newListApplications
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartApplication $
+--             newStartApplication
+--
+--         , requestStopApplication $
+--             newStopApplication
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateApplication $
+--             newUpdateApplication
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAddApplicationCloudWatchLoggingOption $
+--             newAddApplicationCloudWatchLoggingOptionResponse
+--
+--         , responseAddApplicationInput $
+--             newAddApplicationInputResponse
+--
+--         , responseAddApplicationInputProcessingConfiguration $
+--             newAddApplicationInputProcessingConfigurationResponse
+--
+--         , responseAddApplicationOutput $
+--             newAddApplicationOutputResponse
+--
+--         , responseAddApplicationReferenceDataSource $
+--             newAddApplicationReferenceDataSourceResponse
+--
+--         , responseCreateApplication $
+--             newCreateApplicationResponse
+--
+--         , responseDeleteApplication $
+--             newDeleteApplicationResponse
+--
+--         , responseDeleteApplicationCloudWatchLoggingOption $
+--             newDeleteApplicationCloudWatchLoggingOptionResponse
+--
+--         , responseDeleteApplicationInputProcessingConfiguration $
+--             newDeleteApplicationInputProcessingConfigurationResponse
+--
+--         , responseDeleteApplicationOutput $
+--             newDeleteApplicationOutputResponse
+--
+--         , responseDeleteApplicationReferenceDataSource $
+--             newDeleteApplicationReferenceDataSourceResponse
+--
+--         , responseDescribeApplication $
+--             newDescribeApplicationResponse
+--
+--         , responseDiscoverInputSchema $
+--             newDiscoverInputSchemaResponse
+--
+--         , responseListApplications $
+--             newListApplicationsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartApplication $
+--             newStartApplicationResponse
+--
+--         , responseStopApplication $
+--             newStopApplicationResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateApplication $
+--             newUpdateApplicationResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAddApplicationCloudWatchLoggingOption :: AddApplicationCloudWatchLoggingOption -> TestTree
+requestAddApplicationCloudWatchLoggingOption =
+  req
+    "AddApplicationCloudWatchLoggingOption"
+    "fixture/AddApplicationCloudWatchLoggingOption.yaml"
+
+requestAddApplicationInput :: AddApplicationInput -> TestTree
+requestAddApplicationInput =
+  req
+    "AddApplicationInput"
+    "fixture/AddApplicationInput.yaml"
+
+requestAddApplicationInputProcessingConfiguration :: AddApplicationInputProcessingConfiguration -> TestTree
+requestAddApplicationInputProcessingConfiguration =
+  req
+    "AddApplicationInputProcessingConfiguration"
+    "fixture/AddApplicationInputProcessingConfiguration.yaml"
+
+requestAddApplicationOutput :: AddApplicationOutput -> TestTree
+requestAddApplicationOutput =
+  req
+    "AddApplicationOutput"
+    "fixture/AddApplicationOutput.yaml"
+
+requestAddApplicationReferenceDataSource :: AddApplicationReferenceDataSource -> TestTree
+requestAddApplicationReferenceDataSource =
+  req
+    "AddApplicationReferenceDataSource"
+    "fixture/AddApplicationReferenceDataSource.yaml"
+
+requestCreateApplication :: CreateApplication -> TestTree
+requestCreateApplication =
+  req
+    "CreateApplication"
+    "fixture/CreateApplication.yaml"
+
+requestDeleteApplication :: DeleteApplication -> TestTree
+requestDeleteApplication =
+  req
+    "DeleteApplication"
+    "fixture/DeleteApplication.yaml"
+
+requestDeleteApplicationCloudWatchLoggingOption :: DeleteApplicationCloudWatchLoggingOption -> TestTree
+requestDeleteApplicationCloudWatchLoggingOption =
+  req
+    "DeleteApplicationCloudWatchLoggingOption"
+    "fixture/DeleteApplicationCloudWatchLoggingOption.yaml"
+
+requestDeleteApplicationInputProcessingConfiguration :: DeleteApplicationInputProcessingConfiguration -> TestTree
+requestDeleteApplicationInputProcessingConfiguration =
+  req
+    "DeleteApplicationInputProcessingConfiguration"
+    "fixture/DeleteApplicationInputProcessingConfiguration.yaml"
+
+requestDeleteApplicationOutput :: DeleteApplicationOutput -> TestTree
+requestDeleteApplicationOutput =
+  req
+    "DeleteApplicationOutput"
+    "fixture/DeleteApplicationOutput.yaml"
+
+requestDeleteApplicationReferenceDataSource :: DeleteApplicationReferenceDataSource -> TestTree
+requestDeleteApplicationReferenceDataSource =
+  req
+    "DeleteApplicationReferenceDataSource"
+    "fixture/DeleteApplicationReferenceDataSource.yaml"
+
+requestDescribeApplication :: DescribeApplication -> TestTree
+requestDescribeApplication =
+  req
+    "DescribeApplication"
+    "fixture/DescribeApplication.yaml"
+
+requestDiscoverInputSchema :: DiscoverInputSchema -> TestTree
+requestDiscoverInputSchema =
+  req
+    "DiscoverInputSchema"
+    "fixture/DiscoverInputSchema.yaml"
+
+requestListApplications :: ListApplications -> TestTree
+requestListApplications =
+  req
+    "ListApplications"
+    "fixture/ListApplications.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartApplication :: StartApplication -> TestTree
+requestStartApplication =
+  req
+    "StartApplication"
+    "fixture/StartApplication.yaml"
+
+requestStopApplication :: StopApplication -> TestTree
+requestStopApplication =
+  req
+    "StopApplication"
+    "fixture/StopApplication.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateApplication :: UpdateApplication -> TestTree
+requestUpdateApplication =
+  req
+    "UpdateApplication"
+    "fixture/UpdateApplication.yaml"
+
+-- Responses
+
+responseAddApplicationCloudWatchLoggingOption :: AddApplicationCloudWatchLoggingOptionResponse -> TestTree
+responseAddApplicationCloudWatchLoggingOption =
+  res
+    "AddApplicationCloudWatchLoggingOptionResponse"
+    "fixture/AddApplicationCloudWatchLoggingOptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddApplicationCloudWatchLoggingOption)
+
+responseAddApplicationInput :: AddApplicationInputResponse -> TestTree
+responseAddApplicationInput =
+  res
+    "AddApplicationInputResponse"
+    "fixture/AddApplicationInputResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddApplicationInput)
+
+responseAddApplicationInputProcessingConfiguration :: AddApplicationInputProcessingConfigurationResponse -> TestTree
+responseAddApplicationInputProcessingConfiguration =
+  res
+    "AddApplicationInputProcessingConfigurationResponse"
+    "fixture/AddApplicationInputProcessingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddApplicationInputProcessingConfiguration)
+
+responseAddApplicationOutput :: AddApplicationOutputResponse -> TestTree
+responseAddApplicationOutput =
+  res
+    "AddApplicationOutputResponse"
+    "fixture/AddApplicationOutputResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddApplicationOutput)
+
+responseAddApplicationReferenceDataSource :: AddApplicationReferenceDataSourceResponse -> TestTree
+responseAddApplicationReferenceDataSource =
+  res
+    "AddApplicationReferenceDataSourceResponse"
+    "fixture/AddApplicationReferenceDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddApplicationReferenceDataSource)
+
+responseCreateApplication :: CreateApplicationResponse -> TestTree
+responseCreateApplication =
+  res
+    "CreateApplicationResponse"
+    "fixture/CreateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateApplication)
+
+responseDeleteApplication :: DeleteApplicationResponse -> TestTree
+responseDeleteApplication =
+  res
+    "DeleteApplicationResponse"
+    "fixture/DeleteApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplication)
+
+responseDeleteApplicationCloudWatchLoggingOption :: DeleteApplicationCloudWatchLoggingOptionResponse -> TestTree
+responseDeleteApplicationCloudWatchLoggingOption =
+  res
+    "DeleteApplicationCloudWatchLoggingOptionResponse"
+    "fixture/DeleteApplicationCloudWatchLoggingOptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplicationCloudWatchLoggingOption)
+
+responseDeleteApplicationInputProcessingConfiguration :: DeleteApplicationInputProcessingConfigurationResponse -> TestTree
+responseDeleteApplicationInputProcessingConfiguration =
+  res
+    "DeleteApplicationInputProcessingConfigurationResponse"
+    "fixture/DeleteApplicationInputProcessingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplicationInputProcessingConfiguration)
+
+responseDeleteApplicationOutput :: DeleteApplicationOutputResponse -> TestTree
+responseDeleteApplicationOutput =
+  res
+    "DeleteApplicationOutputResponse"
+    "fixture/DeleteApplicationOutputResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplicationOutput)
+
+responseDeleteApplicationReferenceDataSource :: DeleteApplicationReferenceDataSourceResponse -> TestTree
+responseDeleteApplicationReferenceDataSource =
+  res
+    "DeleteApplicationReferenceDataSourceResponse"
+    "fixture/DeleteApplicationReferenceDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplicationReferenceDataSource)
+
+responseDescribeApplication :: DescribeApplicationResponse -> TestTree
+responseDescribeApplication =
+  res
+    "DescribeApplicationResponse"
+    "fixture/DescribeApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeApplication)
+
+responseDiscoverInputSchema :: DiscoverInputSchemaResponse -> TestTree
+responseDiscoverInputSchema =
+  res
+    "DiscoverInputSchemaResponse"
+    "fixture/DiscoverInputSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DiscoverInputSchema)
+
+responseListApplications :: ListApplicationsResponse -> TestTree
+responseListApplications =
+  res
+    "ListApplicationsResponse"
+    "fixture/ListApplicationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApplications)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartApplication :: StartApplicationResponse -> TestTree
+responseStartApplication =
+  res
+    "StartApplicationResponse"
+    "fixture/StartApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartApplication)
+
+responseStopApplication :: StopApplicationResponse -> TestTree
+responseStopApplication =
+  res
+    "StopApplicationResponse"
+    "fixture/StopApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopApplication)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateApplication :: UpdateApplicationResponse -> TestTree
+responseUpdateApplication =
+  res
+    "UpdateApplicationResponse"
+    "fixture/UpdateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateApplication)
diff --git a/test/Test/Amazonka/KinesisAnalytics.hs b/test/Test/Amazonka/KinesisAnalytics.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/KinesisAnalytics.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.KinesisAnalytics
+-- Copyright   : (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.KinesisAnalytics
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/KinesisAnalytics/Internal.hs b/test/Test/Amazonka/KinesisAnalytics/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/KinesisAnalytics/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.KinesisAnalytics.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.KinesisAnalytics.Internal where
