-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon Kinesis Analytics SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, 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 <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.KinesisAnalytics</a> or <a>the AWS
--   documentation</a> to get started.
@package amazonka-kinesis-analytics
@version 1.6.0


module Network.AWS.KinesisAnalytics.Types

-- | API version <tt>2015-08-14</tt> of the Amazon Kinesis Analytics SDK
--   configuration.
kinesisAnalytics :: Service

-- | User-provided application configuration is not valid.
_InvalidApplicationConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Discovery failed to get a record from the streaming source because of
--   the Amazon Kinesis Streams ProvisionedThroughputExceededException. For
--   more information, see <a>GetRecords</a> in the Amazon Kinesis Streams
--   API Reference.
_ResourceProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Specified input parameter value is invalid.
_InvalidArgumentException :: AsError a => Getting (First ServiceError) a ServiceError

-- | User-provided application code (query) is invalid. This can be a
--   simple syntax error.
_CodeValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | 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

-- | The service is unavailable, back off and retry the operation.
_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError

-- | 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

-- | Specified application can't be found.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exceeded the number of applications allowed.
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Application is not available for this operation.
_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
data ApplicationStatus
Deleting :: ApplicationStatus
Ready :: ApplicationStatus
Running :: ApplicationStatus
Starting :: ApplicationStatus
Stopping :: ApplicationStatus
Updating :: ApplicationStatus
data InputStartingPosition
LastStoppedPoint :: InputStartingPosition
Now :: InputStartingPosition
TrimHorizon :: InputStartingPosition
data RecordFormatType
CSV :: RecordFormatType
JSON :: RecordFormatType

-- | Provides a description of the application, including the application
--   Amazon Resource Name (ARN), status, latest version, and input and
--   output configuration.
--   
--   <i>See:</i> <a>applicationDetail</a> smart constructor.
data ApplicationDetail

-- | Creates a value of <a>ApplicationDetail</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adApplicationDescription</a> - Description of the
--   application.</li>
--   <li><a>adOutputDescriptions</a> - Describes the application output
--   configuration. For more information, see <a>Configuring Application
--   Output</a> .</li>
--   <li><a>adCloudWatchLoggingOptionDescriptions</a> - 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 <a>Working with Amazon
--   CloudWatch Logs</a> .</li>
--   <li><a>adReferenceDataSourceDescriptions</a> - Describes reference
--   data sources configured for the application. For more information, see
--   <a>Configuring Application Input</a> .</li>
--   <li><a>adInputDescriptions</a> - Describes the application input
--   configuration. For more information, see <a>Configuring Application
--   Input</a> .</li>
--   <li><a>adApplicationCode</a> - Returns the application code that you
--   provided to perform data analysis on any of the in-application streams
--   in your application.</li>
--   <li><a>adCreateTimestamp</a> - Time stamp when the application version
--   was created.</li>
--   <li><a>adLastUpdateTimestamp</a> - Time stamp when the application was
--   last updated.</li>
--   <li><a>adApplicationName</a> - Name of the application.</li>
--   <li><a>adApplicationARN</a> - ARN of the application.</li>
--   <li><a>adApplicationStatus</a> - Status of the application.</li>
--   <li><a>adApplicationVersionId</a> - Provides the current application
--   version.</li>
--   </ul>
applicationDetail :: Text -> Text -> ApplicationStatus -> Natural -> ApplicationDetail

-- | Description of the application.
adApplicationDescription :: Lens' ApplicationDetail (Maybe Text)

-- | Describes the application output configuration. For more information,
--   see <a>Configuring Application Output</a> .
adOutputDescriptions :: Lens' ApplicationDetail [OutputDescription]

-- | 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 <a>Working
--   with Amazon CloudWatch Logs</a> .
adCloudWatchLoggingOptionDescriptions :: Lens' ApplicationDetail [CloudWatchLoggingOptionDescription]

-- | Describes reference data sources configured for the application. For
--   more information, see <a>Configuring Application Input</a> .
adReferenceDataSourceDescriptions :: Lens' ApplicationDetail [ReferenceDataSourceDescription]

-- | Describes the application input configuration. For more information,
--   see <a>Configuring Application Input</a> .
adInputDescriptions :: Lens' ApplicationDetail [InputDescription]

-- | 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)

-- | Time stamp when the application version was created.
adCreateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)

-- | Time stamp when the application was last updated.
adLastUpdateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)

-- | Name of the application.
adApplicationName :: Lens' ApplicationDetail Text

-- | ARN of the application.
adApplicationARN :: Lens' ApplicationDetail Text

-- | Status of the application.
adApplicationStatus :: Lens' ApplicationDetail ApplicationStatus

-- | Provides the current application version.
adApplicationVersionId :: Lens' ApplicationDetail Natural

-- | Provides application summary information, including the application
--   Amazon Resource Name (ARN), name, and status.
--   
--   <i>See:</i> <a>applicationSummary</a> smart constructor.
data ApplicationSummary

-- | Creates a value of <a>ApplicationSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asApplicationName</a> - Name of the application.</li>
--   <li><a>asApplicationARN</a> - ARN of the application.</li>
--   <li><a>asApplicationStatus</a> - Status of the application.</li>
--   </ul>
applicationSummary :: Text -> Text -> ApplicationStatus -> ApplicationSummary

-- | Name of the application.
asApplicationName :: Lens' ApplicationSummary Text

-- | ARN of the application.
asApplicationARN :: Lens' ApplicationSummary Text

-- | Status of the application.
asApplicationStatus :: Lens' ApplicationSummary ApplicationStatus

-- | Describes updates to apply to an existing Amazon Kinesis Analytics
--   application.
--   
--   <i>See:</i> <a>applicationUpdate</a> smart constructor.
data ApplicationUpdate

-- | Creates a value of <a>ApplicationUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auReferenceDataSourceUpdates</a> - Describes application
--   reference data source updates.</li>
--   <li><a>auInputUpdates</a> - Describes application input configuration
--   updates.</li>
--   <li><a>auCloudWatchLoggingOptionUpdates</a> - Describes application
--   CloudWatch logging option updates.</li>
--   <li><a>auOutputUpdates</a> - Describes application output
--   configuration updates.</li>
--   <li><a>auApplicationCodeUpdate</a> - Describes application code
--   updates.</li>
--   </ul>
applicationUpdate :: ApplicationUpdate

-- | Describes application reference data source updates.
auReferenceDataSourceUpdates :: Lens' ApplicationUpdate [ReferenceDataSourceUpdate]

-- | Describes application input configuration updates.
auInputUpdates :: Lens' ApplicationUpdate [InputUpdate]

-- | Describes application CloudWatch logging option updates.
auCloudWatchLoggingOptionUpdates :: Lens' ApplicationUpdate [CloudWatchLoggingOptionUpdate]

-- | Describes application output configuration updates.
auOutputUpdates :: Lens' ApplicationUpdate [OutputUpdate]

-- | Describes application code updates.
auApplicationCodeUpdate :: Lens' ApplicationUpdate (Maybe Text)

-- | 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 <i>'\n'</i> as the row delimiter
--   and a comma (",") as the column delimiter:
--   
--   <pre>
--   "name1", "address1"
--   </pre>
--   
--   <pre>
--   "name2, "address2"
--   </pre>
--   
--   <i>See:</i> <a>csvMappingParameters</a> smart constructor.
data CSVMappingParameters

-- | Creates a value of <a>CSVMappingParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmpRecordRowDelimiter</a> - Row delimiter. For example, in a
--   CSV format, <i>'\n'</i> is the typical row delimiter.</li>
--   <li><a>cmpRecordColumnDelimiter</a> - Column delimiter. For example,
--   in a CSV format, a comma (",") is the typical column delimiter.</li>
--   </ul>
csvMappingParameters :: Text -> Text -> CSVMappingParameters

-- | Row delimiter. For example, in a CSV format, <i>'\n'</i> is the
--   typical row delimiter.
cmpRecordRowDelimiter :: Lens' CSVMappingParameters Text

-- | Column delimiter. For example, in a CSV format, a comma (",") is the
--   typical column delimiter.
cmpRecordColumnDelimiter :: Lens' CSVMappingParameters Text

-- | Provides a description of CloudWatch logging options, including the
--   log stream Amazon Resource Name (ARN) and the role ARN.
--   
--   <i>See:</i> <a>cloudWatchLoggingOption</a> smart constructor.
data CloudWatchLoggingOption

-- | Creates a value of <a>CloudWatchLoggingOption</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwloLogStreamARN</a> - ARN of the CloudWatch log to receive
--   application messages.</li>
--   <li><a>cwloRoleARN</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
--   <tt>PutLogEvents</tt> policy action enabled.</li>
--   </ul>
cloudWatchLoggingOption :: Text -> Text -> CloudWatchLoggingOption

-- | ARN of the CloudWatch log to receive application messages.
cwloLogStreamARN :: Lens' CloudWatchLoggingOption 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 <tt>PutLogEvents</tt> policy action enabled.
cwloRoleARN :: Lens' CloudWatchLoggingOption Text

-- | Description of the CloudWatch logging option.
--   
--   <i>See:</i> <a>cloudWatchLoggingOptionDescription</a> smart
--   constructor.
data CloudWatchLoggingOptionDescription

-- | Creates a value of <a>CloudWatchLoggingOptionDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwlodCloudWatchLoggingOptionId</a> - ID of the CloudWatch
--   logging option description.</li>
--   <li><a>cwlodLogStreamARN</a> - ARN of the CloudWatch log to receive
--   application messages.</li>
--   <li><a>cwlodRoleARN</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 <tt>PutLogEvents</tt>
--   policy action enabled.</li>
--   </ul>
cloudWatchLoggingOptionDescription :: Text -> Text -> CloudWatchLoggingOptionDescription

-- | ID of the CloudWatch logging option description.
cwlodCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionDescription (Maybe Text)

-- | ARN of the CloudWatch log to receive application messages.
cwlodLogStreamARN :: Lens' CloudWatchLoggingOptionDescription 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 <tt>PutLogEvents</tt> policy action enabled.
cwlodRoleARN :: Lens' CloudWatchLoggingOptionDescription Text

-- | Describes CloudWatch logging option updates.
--   
--   <i>See:</i> <a>cloudWatchLoggingOptionUpdate</a> smart constructor.
data CloudWatchLoggingOptionUpdate

-- | Creates a value of <a>CloudWatchLoggingOptionUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwlouRoleARNUpdate</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 <tt>PutLogEvents</tt>
--   policy action enabled.</li>
--   <li><a>cwlouLogStreamARNUpdate</a> - ARN of the CloudWatch log to
--   receive application messages.</li>
--   <li><a>cwlouCloudWatchLoggingOptionId</a> - ID of the CloudWatch
--   logging option to update</li>
--   </ul>
cloudWatchLoggingOptionUpdate :: Text -> 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 <tt>PutLogEvents</tt> policy action enabled.
cwlouRoleARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)

-- | ARN of the CloudWatch log to receive application messages.
cwlouLogStreamARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)

-- | ID of the CloudWatch logging option to update
cwlouCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionUpdate Text

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
--   
--   <i>See:</i> <a>destinationSchema</a> smart constructor.
data DestinationSchema

-- | Creates a value of <a>DestinationSchema</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsRecordFormatType</a> - Specifies the format of the records on
--   the output stream.</li>
--   </ul>
destinationSchema :: DestinationSchema

-- | Specifies the format of the records on the output stream.
dsRecordFormatType :: Lens' DestinationSchema (Maybe RecordFormatType)

-- | 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 <a>Configuring
--   Application Input</a> .
--   
--   <i>See:</i> <a>input</a> smart constructor.
data Input

-- | Creates a value of <a>Input</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iInputParallelism</a> - Describes the number of in-application
--   streams to create. Data from your source is routed to these
--   in-application input streams. (see <a>Configuring Application
--   Input</a> .</li>
--   <li><a>iInputProcessingConfiguration</a> - The
--   <a>InputProcessingConfiguration</a> 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 <a>InputLambdaProcessor</a> .</li>
--   <li><a>iKinesisStreamsInput</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 <tt>KinesisStreamsInput</tt> or
--   <tt>KinesisFirehoseInput</tt> is required.</li>
--   <li><a>iKinesisFirehoseInput</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
--   <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt> is
--   required.</li>
--   <li><a>iNamePrefix</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 <tt>InputParallelism</tt> count you specified)
--   in-application streams with names "MyInApplicationStream_001,"
--   "MyInApplicationStream_002," and so on.</li>
--   <li><a>iInputSchema</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.</li>
--   </ul>
input :: Text -> SourceSchema -> Input

-- | Describes the number of in-application streams to create. Data from
--   your source is routed to these in-application input streams. (see
--   <a>Configuring Application Input</a> .
iInputParallelism :: Lens' Input (Maybe InputParallelism)

-- | The <a>InputProcessingConfiguration</a> 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 <a>InputLambdaProcessor</a> .
iInputProcessingConfiguration :: Lens' Input (Maybe InputProcessingConfiguration)

-- | 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 <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt>
--   is required.
iKinesisStreamsInput :: Lens' Input (Maybe KinesisStreamsInput)

-- | 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 <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt>
--   is required.
iKinesisFirehoseInput :: Lens' Input (Maybe KinesisFirehoseInput)

-- | 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
--   <tt>InputParallelism</tt> count you specified) in-application streams
--   with names "MyInApplicationStream_001," "MyInApplicationStream_002,"
--   and so on.
iNamePrefix :: Lens' Input 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.
iInputSchema :: Lens' Input SourceSchema

-- | 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.
--   
--   <i>See:</i> <a>inputConfiguration</a> smart constructor.
data InputConfiguration

-- | Creates a value of <a>InputConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>icId</a> - Input source ID. You can get this ID by calling the
--   <tt>DescribeApplication</tt> operation.</li>
--   <li><a>icInputStartingPositionConfiguration</a> - Point at which you
--   want the application to start processing records from the streaming
--   source.</li>
--   </ul>
inputConfiguration :: Text -> InputStartingPositionConfiguration -> InputConfiguration

-- | Input source ID. You can get this ID by calling the
--   <tt>DescribeApplication</tt> operation.
icId :: Lens' InputConfiguration Text

-- | Point at which you want the application to start processing records
--   from the streaming source.
icInputStartingPositionConfiguration :: Lens' InputConfiguration InputStartingPositionConfiguration

-- | Describes the application input configuration. For more information,
--   see <a>Configuring Application Input</a> .
--   
--   <i>See:</i> <a>inputDescription</a> smart constructor.
data InputDescription

-- | Creates a value of <a>InputDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idInputStartingPositionConfiguration</a> - Point at which the
--   application is configured to read from the input stream.</li>
--   <li><a>idInputParallelism</a> - Describes the configured parallelism
--   (number of in-application streams mapped to the streaming
--   source).</li>
--   <li><a>idInputId</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.</li>
--   <li><a>idInAppStreamNames</a> - Returns the in-application stream
--   names that are mapped to the stream source.</li>
--   <li><a>idKinesisFirehoseInputDescription</a> - 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.</li>
--   <li><a>idInputSchema</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.</li>
--   <li><a>idKinesisStreamsInputDescription</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.</li>
--   <li><a>idNamePrefix</a> - In-application name prefix.</li>
--   <li><a>idInputProcessingConfigurationDescription</a> - The description
--   of the preprocessor that executes on records in this input before the
--   application's code is run.</li>
--   </ul>
inputDescription :: InputDescription

-- | Point at which the application is configured to read from the input
--   stream.
idInputStartingPositionConfiguration :: Lens' InputDescription (Maybe InputStartingPositionConfiguration)

-- | Describes the configured parallelism (number of in-application streams
--   mapped to the streaming source).
idInputParallelism :: Lens' InputDescription (Maybe InputParallelism)

-- | 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)

-- | Returns the in-application stream names that are mapped to the stream
--   source.
idInAppStreamNames :: Lens' InputDescription [Text]

-- | 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)

-- | 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)

-- | 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)

-- | In-application name prefix.
idNamePrefix :: Lens' InputDescription (Maybe Text)

-- | The description of the preprocessor that executes on records in this
--   input before the application's code is run.
idInputProcessingConfigurationDescription :: Lens' InputDescription (Maybe InputProcessingConfigurationDescription)

-- | An object that contains the Amazon Resource Name (ARN) of the <a>AWS
--   Lambda</a> 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.
--   
--   <i>See:</i> <a>inputLambdaProcessor</a> smart constructor.
data InputLambdaProcessor

-- | Creates a value of <a>InputLambdaProcessor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpResourceARN</a> - The ARN of the <a>AWS Lambda</a> function
--   that operates on records in the stream.</li>
--   <li><a>ilpRoleARN</a> - The ARN of the IAM role that is used to access
--   the AWS Lambda function.</li>
--   </ul>
inputLambdaProcessor :: Text -> Text -> InputLambdaProcessor

-- | The ARN of the <a>AWS Lambda</a> function that operates on records in
--   the stream.
ilpResourceARN :: Lens' InputLambdaProcessor Text

-- | The ARN of the IAM role that is used to access the AWS Lambda
--   function.
ilpRoleARN :: Lens' InputLambdaProcessor Text

-- | An object that contains the Amazon Resource Name (ARN) of the <a>AWS
--   Lambda</a> 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.
--   
--   <i>See:</i> <a>inputLambdaProcessorDescription</a> smart constructor.
data InputLambdaProcessorDescription

-- | Creates a value of <a>InputLambdaProcessorDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpdResourceARN</a> - The ARN of the <a>AWS Lambda</a> function
--   that is used to preprocess the records in the stream.</li>
--   <li><a>ilpdRoleARN</a> - The ARN of the IAM role that is used to
--   access the AWS Lambda function.</li>
--   </ul>
inputLambdaProcessorDescription :: InputLambdaProcessorDescription

-- | The ARN of the <a>AWS Lambda</a> function that is used to preprocess
--   the records in the stream.
ilpdResourceARN :: Lens' InputLambdaProcessorDescription (Maybe Text)

-- | The ARN of the IAM role that is used to access the AWS Lambda
--   function.
ilpdRoleARN :: Lens' InputLambdaProcessorDescription (Maybe Text)

-- | Represents an update to the <a>InputLambdaProcessor</a> that is used
--   to preprocess the records in the stream.
--   
--   <i>See:</i> <a>inputLambdaProcessorUpdate</a> smart constructor.
data InputLambdaProcessorUpdate

-- | Creates a value of <a>InputLambdaProcessorUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpuRoleARNUpdate</a> - The ARN of the new IAM role that is
--   used to access the AWS Lambda function.</li>
--   <li><a>ilpuResourceARNUpdate</a> - The Amazon Resource Name (ARN) of
--   the new <a>AWS Lambda</a> function that is used to preprocess the
--   records in the stream.</li>
--   </ul>
inputLambdaProcessorUpdate :: InputLambdaProcessorUpdate

-- | The ARN of the new IAM role that is used to access the AWS Lambda
--   function.
ilpuRoleARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)

-- | The Amazon Resource Name (ARN) of the new <a>AWS Lambda</a> function
--   that is used to preprocess the records in the stream.
ilpuResourceARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)

-- | Describes the number of in-application streams to create for a given
--   streaming source. For information about parallelism, see
--   <a>Configuring Application Input</a> .
--   
--   <i>See:</i> <a>inputParallelism</a> smart constructor.
data InputParallelism

-- | Creates a value of <a>InputParallelism</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipCount</a> - Number of in-application streams to create. For
--   more information, see <a>Limits</a> .</li>
--   </ul>
inputParallelism :: InputParallelism

-- | Number of in-application streams to create. For more information, see
--   <a>Limits</a> .
ipCount :: Lens' InputParallelism (Maybe Natural)

-- | Provides updates to the parallelism count.
--   
--   <i>See:</i> <a>inputParallelismUpdate</a> smart constructor.
data InputParallelismUpdate

-- | Creates a value of <a>InputParallelismUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipuCountUpdate</a> - Number of in-application streams to create
--   for the specified streaming source.</li>
--   </ul>
inputParallelismUpdate :: InputParallelismUpdate

-- | Number of in-application streams to create for the specified streaming
--   source.
ipuCountUpdate :: Lens' InputParallelismUpdate (Maybe Natural)

-- | 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 <a>AWS Lambda</a> .
--   
--   <i>See:</i> <a>inputProcessingConfiguration</a> smart constructor.
data InputProcessingConfiguration

-- | Creates a value of <a>InputProcessingConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcInputLambdaProcessor</a> - The <a>InputLambdaProcessor</a>
--   that is used to preprocess the records in the stream before being
--   processed by your application code.</li>
--   </ul>
inputProcessingConfiguration :: InputLambdaProcessor -> InputProcessingConfiguration

-- | The <a>InputLambdaProcessor</a> that is used to preprocess the records
--   in the stream before being processed by your application code.
ipcInputLambdaProcessor :: Lens' InputProcessingConfiguration InputLambdaProcessor

-- | Provides configuration information about an input processor.
--   Currently, the only input processor available is <a>AWS Lambda</a> .
--   
--   <i>See:</i> <a>inputProcessingConfigurationDescription</a> smart
--   constructor.
data InputProcessingConfigurationDescription

-- | Creates a value of <a>InputProcessingConfigurationDescription</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcdInputLambdaProcessorDescription</a> - Provides
--   configuration information about the associated
--   <a>InputLambdaProcessorDescription</a> .</li>
--   </ul>
inputProcessingConfigurationDescription :: InputProcessingConfigurationDescription

-- | Provides configuration information about the associated
--   <a>InputLambdaProcessorDescription</a> .
ipcdInputLambdaProcessorDescription :: Lens' InputProcessingConfigurationDescription (Maybe InputLambdaProcessorDescription)

-- | Describes updates to an <a>InputProcessingConfiguration</a> .
--   
--   <i>See:</i> <a>inputProcessingConfigurationUpdate</a> smart
--   constructor.
data InputProcessingConfigurationUpdate

-- | Creates a value of <a>InputProcessingConfigurationUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcuInputLambdaProcessorUpdate</a> - Provides update
--   information for an <a>InputLambdaProcessor</a> .</li>
--   </ul>
inputProcessingConfigurationUpdate :: InputLambdaProcessorUpdate -> InputProcessingConfigurationUpdate

-- | Provides update information for an <a>InputLambdaProcessor</a> .
ipcuInputLambdaProcessorUpdate :: Lens' InputProcessingConfigurationUpdate InputLambdaProcessorUpdate

-- | Describes updates for the application's input schema.
--   
--   <i>See:</i> <a>inputSchemaUpdate</a> smart constructor.
data InputSchemaUpdate

-- | Creates a value of <a>InputSchemaUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isuRecordFormatUpdate</a> - Specifies the format of the records
--   on the streaming source.</li>
--   <li><a>isuRecordEncodingUpdate</a> - Specifies the encoding of the
--   records in the streaming source. For example, UTF-8.</li>
--   <li><a>isuRecordColumnUpdates</a> - A list of <tt>RecordColumn</tt>
--   objects. Each object describes the mapping of the streaming source
--   element to the corresponding column in the in-application stream.</li>
--   </ul>
inputSchemaUpdate :: InputSchemaUpdate

-- | Specifies the format of the records on the streaming source.
isuRecordFormatUpdate :: Lens' InputSchemaUpdate (Maybe RecordFormat)

-- | Specifies the encoding of the records in the streaming source. For
--   example, UTF-8.
isuRecordEncodingUpdate :: Lens' InputSchemaUpdate (Maybe Text)

-- | A list of <tt>RecordColumn</tt> 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))

-- | Describes the point at which the application reads from the streaming
--   source.
--   
--   <i>See:</i> <a>inputStartingPositionConfiguration</a> smart
--   constructor.
data InputStartingPositionConfiguration

-- | Creates a value of <a>InputStartingPositionConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ispcInputStartingPosition</a> - The starting position on the
--   stream. * <tt>NOW</tt> - Start reading just after the most recent
--   record in the stream, start at the request time stamp that the
--   customer issued. * <tt>TRIM_HORIZON</tt> - 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. * <tt>LAST_STOPPED_POINT</tt> - Resume
--   reading from where the application last stopped reading.</li>
--   </ul>
inputStartingPositionConfiguration :: InputStartingPositionConfiguration

-- | The starting position on the stream. * <tt>NOW</tt> - Start reading
--   just after the most recent record in the stream, start at the request
--   time stamp that the customer issued. * <tt>TRIM_HORIZON</tt> - 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. *
--   <tt>LAST_STOPPED_POINT</tt> - Resume reading from where the
--   application last stopped reading.
ispcInputStartingPosition :: Lens' InputStartingPositionConfiguration (Maybe InputStartingPosition)

-- | Describes updates to a specific input configuration (identified by the
--   <tt>InputId</tt> of an application).
--   
--   <i>See:</i> <a>inputUpdate</a> smart constructor.
data InputUpdate

-- | Creates a value of <a>InputUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iuInputProcessingConfigurationUpdate</a> - Describes updates
--   for an input processing configuration.</li>
--   <li><a>iuKinesisStreamsInputUpdate</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.</li>
--   <li><a>iuInputParallelismUpdate</a> - Describes the parallelism
--   updates (the number in-application streams Amazon Kinesis Analytics
--   creates for the specific streaming source).</li>
--   <li><a>iuNamePrefixUpdate</a> - Name prefix for in-application streams
--   that Amazon Kinesis Analytics creates for the specific streaming
--   source.</li>
--   <li><a>iuInputSchemaUpdate</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.</li>
--   <li><a>iuKinesisFirehoseInputUpdate</a> - If an Amazon Kinesis
--   Firehose delivery stream is the streaming source to be updated,
--   provides an updated stream ARN and IAM role ARN.</li>
--   <li><a>iuInputId</a> - Input ID of the application input to be
--   updated.</li>
--   </ul>
inputUpdate :: Text -> InputUpdate

-- | Describes updates for an input processing configuration.
iuInputProcessingConfigurationUpdate :: Lens' InputUpdate (Maybe InputProcessingConfigurationUpdate)

-- | 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)

-- | Describes the parallelism updates (the number in-application streams
--   Amazon Kinesis Analytics creates for the specific streaming source).
iuInputParallelismUpdate :: Lens' InputUpdate (Maybe InputParallelismUpdate)

-- | Name prefix for in-application streams that Amazon Kinesis Analytics
--   creates for the specific streaming source.
iuNamePrefixUpdate :: Lens' InputUpdate (Maybe Text)

-- | 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)

-- | 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)

-- | Input ID of the application input to be updated.
iuInputId :: Lens' InputUpdate Text

-- | Provides additional mapping information when JSON is the record format
--   on the streaming source.
--   
--   <i>See:</i> <a>jsonMappingParameters</a> smart constructor.
data JSONMappingParameters

-- | Creates a value of <a>JSONMappingParameters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jmpRecordRowPath</a> - Path to the top-level parent that
--   contains the records.</li>
--   </ul>
jsonMappingParameters :: Text -> JSONMappingParameters

-- | Path to the top-level parent that contains the records.
jmpRecordRowPath :: Lens' JSONMappingParameters Text

-- | 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.
--   
--   <i>See:</i> <a>kinesisFirehoseInput</a> smart constructor.
data KinesisFirehoseInput

-- | Creates a value of <a>KinesisFirehoseInput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfiResourceARN</a> - ARN of the input delivery stream.</li>
--   <li><a>kfiRoleARN</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.</li>
--   </ul>
kinesisFirehoseInput :: Text -> Text -> KinesisFirehoseInput

-- | ARN of the input delivery stream.
kfiResourceARN :: Lens' KinesisFirehoseInput Text

-- | 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

-- | Describes the Amazon Kinesis Firehose delivery stream that is
--   configured as the streaming source in the application input
--   configuration.
--   
--   <i>See:</i> <a>kinesisFirehoseInputDescription</a> smart constructor.
data KinesisFirehoseInputDescription

-- | Creates a value of <a>KinesisFirehoseInputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfidResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis Firehose delivery stream.</li>
--   <li><a>kfidRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics assumes to access the stream.</li>
--   </ul>
kinesisFirehoseInputDescription :: KinesisFirehoseInputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream.
kfidResourceARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics assumes to access
--   the stream.
kfidRoleARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)

-- | When updating application input configuration, provides information
--   about an Amazon Kinesis Firehose delivery stream as the streaming
--   source.
--   
--   <i>See:</i> <a>kinesisFirehoseInputUpdate</a> smart constructor.
data KinesisFirehoseInputUpdate

-- | Creates a value of <a>KinesisFirehoseInputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfiuRoleARNUpdate</a> - 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.</li>
--   <li><a>kfiuResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   input Amazon Kinesis Firehose delivery stream to read.</li>
--   </ul>
kinesisFirehoseInputUpdate :: KinesisFirehoseInputUpdate

-- | 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)

-- | Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose
--   delivery stream to read.
kfiuResourceARNUpdate :: Lens' KinesisFirehoseInputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisFirehoseOutput</a> smart constructor.
data KinesisFirehoseOutput

-- | Creates a value of <a>KinesisFirehoseOutput</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfoResourceARN</a> - ARN of the destination Amazon Kinesis
--   Firehose delivery stream to write to.</li>
--   <li><a>kfoRoleARN</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.</li>
--   </ul>
kinesisFirehoseOutput :: Text -> Text -> KinesisFirehoseOutput

-- | ARN of the destination Amazon Kinesis Firehose delivery stream to
--   write to.
kfoResourceARN :: Lens' KinesisFirehoseOutput 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.
kfoRoleARN :: Lens' KinesisFirehoseOutput Text

-- | For an application output, describes the Amazon Kinesis Firehose
--   delivery stream configured as its destination.
--   
--   <i>See:</i> <a>kinesisFirehoseOutputDescription</a> smart constructor.
data KinesisFirehoseOutputDescription

-- | Creates a value of <a>KinesisFirehoseOutputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfodResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis Firehose delivery stream.</li>
--   <li><a>kfodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisFirehoseOutputDescription :: KinesisFirehoseOutputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream.
kfodResourceARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
kfodRoleARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   Amazon Kinesis Firehose delivery stream configured as the destination.
--   
--   <i>See:</i> <a>kinesisFirehoseOutputUpdate</a> smart constructor.
data KinesisFirehoseOutputUpdate

-- | Creates a value of <a>KinesisFirehoseOutputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfouRoleARNUpdate</a> - 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.</li>
--   <li><a>kfouResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   Amazon Kinesis Firehose delivery stream to write to.</li>
--   </ul>
kinesisFirehoseOutputUpdate :: KinesisFirehoseOutputUpdate

-- | 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)

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream to write to.
kfouResourceARNUpdate :: Lens' KinesisFirehoseOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisStreamsInput</a> smart constructor.
data KinesisStreamsInput

-- | Creates a value of <a>KinesisStreamsInput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksiResourceARN</a> - ARN of the input Amazon Kinesis stream to
--   read.</li>
--   <li><a>ksiRoleARN</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.</li>
--   </ul>
kinesisStreamsInput :: Text -> Text -> KinesisStreamsInput

-- | ARN of the input Amazon Kinesis stream to read.
ksiResourceARN :: Lens' KinesisStreamsInput 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.
ksiRoleARN :: Lens' KinesisStreamsInput Text

-- | Describes the Amazon Kinesis stream that is configured as the
--   streaming source in the application input configuration.
--   
--   <i>See:</i> <a>kinesisStreamsInputDescription</a> smart constructor.
data KinesisStreamsInputDescription

-- | Creates a value of <a>KinesisStreamsInputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksidResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis stream.</li>
--   <li><a>ksidRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisStreamsInputDescription :: KinesisStreamsInputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
ksidResourceARN :: Lens' KinesisStreamsInputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
ksidRoleARN :: Lens' KinesisStreamsInputDescription (Maybe Text)

-- | When updating application input configuration, provides information
--   about an Amazon Kinesis stream as the streaming source.
--   
--   <i>See:</i> <a>kinesisStreamsInputUpdate</a> smart constructor.
data KinesisStreamsInputUpdate

-- | Creates a value of <a>KinesisStreamsInputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksiuRoleARNUpdate</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.</li>
--   <li><a>ksiuResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   input Amazon Kinesis stream to read.</li>
--   </ul>
kinesisStreamsInputUpdate :: 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.
ksiuRoleARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
ksiuResourceARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisStreamsOutput</a> smart constructor.
data KinesisStreamsOutput

-- | Creates a value of <a>KinesisStreamsOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksoResourceARN</a> - ARN of the destination Amazon Kinesis
--   stream to write to.</li>
--   <li><a>ksoRoleARN</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.</li>
--   </ul>
kinesisStreamsOutput :: Text -> Text -> KinesisStreamsOutput

-- | ARN of the destination Amazon Kinesis stream to write to.
ksoResourceARN :: Lens' KinesisStreamsOutput 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.
ksoRoleARN :: Lens' KinesisStreamsOutput Text

-- | For an application output, describes the Amazon Kinesis stream
--   configured as its destination.
--   
--   <i>See:</i> <a>kinesisStreamsOutputDescription</a> smart constructor.
data KinesisStreamsOutputDescription

-- | Creates a value of <a>KinesisStreamsOutputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksodResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis stream.</li>
--   <li><a>ksodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisStreamsOutputDescription :: KinesisStreamsOutputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
ksodResourceARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
ksodRoleARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   Amazon Kinesis stream configured as the destination.
--   
--   <i>See:</i> <a>kinesisStreamsOutputUpdate</a> smart constructor.
data KinesisStreamsOutputUpdate

-- | Creates a value of <a>KinesisStreamsOutputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksouRoleARNUpdate</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.</li>
--   <li><a>ksouResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   Amazon Kinesis stream where you want to write the output.</li>
--   </ul>
kinesisStreamsOutputUpdate :: 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.
ksouRoleARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want
--   to write the output.
ksouResourceARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>lambdaOutput</a> smart constructor.
data LambdaOutput

-- | Creates a value of <a>LambdaOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>loResourceARN</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function to write to.</li>
--   <li><a>loRoleARN</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.</li>
--   </ul>
lambdaOutput :: Text -> Text -> LambdaOutput

-- | Amazon Resource Name (ARN) of the destination Lambda function to write
--   to.
loResourceARN :: Lens' LambdaOutput 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.
loRoleARN :: Lens' LambdaOutput Text

-- | For an application output, describes the AWS Lambda function
--   configured as its destination.
--   
--   <i>See:</i> <a>lambdaOutputDescription</a> smart constructor.
data LambdaOutputDescription

-- | Creates a value of <a>LambdaOutputDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lodResourceARN</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function.</li>
--   <li><a>lodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to write to the destination function.</li>
--   </ul>
lambdaOutputDescription :: LambdaOutputDescription

-- | Amazon Resource Name (ARN) of the destination Lambda function.
lodResourceARN :: Lens' LambdaOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write
--   to the destination function.
lodRoleARN :: Lens' LambdaOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   AWS Lambda function configured as the destination.
--   
--   <i>See:</i> <a>lambdaOutputUpdate</a> smart constructor.
data LambdaOutputUpdate

-- | Creates a value of <a>LambdaOutputUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>louRoleARNUpdate</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.</li>
--   <li><a>louResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function.</li>
--   </ul>
lambdaOutputUpdate :: 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.
louRoleARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the destination Lambda function.
louResourceARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>mappingParameters</a> smart constructor.
data MappingParameters

-- | Creates a value of <a>MappingParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mpCSVMappingParameters</a> - Provides additional mapping
--   information when the record format uses delimiters (for example,
--   CSV).</li>
--   <li><a>mpJSONMappingParameters</a> - Provides additional mapping
--   information when JSON is the record format on the streaming
--   source.</li>
--   </ul>
mappingParameters :: MappingParameters

-- | Provides additional mapping information when the record format uses
--   delimiters (for example, CSV).
mpCSVMappingParameters :: Lens' MappingParameters (Maybe CSVMappingParameters)

-- | Provides additional mapping information when JSON is the record format
--   on the streaming source.
mpJSONMappingParameters :: Lens' MappingParameters (Maybe JSONMappingParameters)

-- | 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 <a>Limits</a> .
--   
--   <i>See:</i> <a>output</a> smart constructor.
data Output

-- | Creates a value of <a>Output</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oLambdaOutput</a> - Identifies an AWS Lambda function as the
--   destination.</li>
--   <li><a>oKinesisStreamsOutput</a> - Identifies an Amazon Kinesis stream
--   as the destination.</li>
--   <li><a>oKinesisFirehoseOutput</a> - Identifies an Amazon Kinesis
--   Firehose delivery stream as the destination.</li>
--   <li><a>oName</a> - Name of the in-application stream.</li>
--   <li><a>oDestinationSchema</a> - Describes the data format when records
--   are written to the destination. For more information, see
--   <a>Configuring Application Output</a> .</li>
--   </ul>
output :: Text -> DestinationSchema -> Output

-- | Identifies an AWS Lambda function as the destination.
oLambdaOutput :: Lens' Output (Maybe LambdaOutput)

-- | Identifies an Amazon Kinesis stream as the destination.
oKinesisStreamsOutput :: Lens' Output (Maybe KinesisStreamsOutput)

-- | Identifies an Amazon Kinesis Firehose delivery stream as the
--   destination.
oKinesisFirehoseOutput :: Lens' Output (Maybe KinesisFirehoseOutput)

-- | Name of the in-application stream.
oName :: Lens' Output Text

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
oDestinationSchema :: Lens' Output DestinationSchema

-- | 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.
--   
--   <i>See:</i> <a>outputDescription</a> smart constructor.
data OutputDescription

-- | Creates a value of <a>OutputDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>odOutputId</a> - A unique identifier for the output
--   configuration.</li>
--   <li><a>odDestinationSchema</a> - Data format used for writing data to
--   the destination.</li>
--   <li><a>odKinesisFirehoseOutputDescription</a> - Describes the Amazon
--   Kinesis Firehose delivery stream configured as the destination where
--   output is written.</li>
--   <li><a>odKinesisStreamsOutputDescription</a> - Describes Amazon
--   Kinesis stream configured as the destination where output is
--   written.</li>
--   <li><a>odName</a> - Name of the in-application stream configured as
--   output.</li>
--   <li><a>odLambdaOutputDescription</a> - Describes the AWS Lambda
--   function configured as the destination where output is written.</li>
--   </ul>
outputDescription :: OutputDescription

-- | A unique identifier for the output configuration.
odOutputId :: Lens' OutputDescription (Maybe Text)

-- | Data format used for writing data to the destination.
odDestinationSchema :: Lens' OutputDescription (Maybe DestinationSchema)

-- | Describes the Amazon Kinesis Firehose delivery stream configured as
--   the destination where output is written.
odKinesisFirehoseOutputDescription :: Lens' OutputDescription (Maybe KinesisFirehoseOutputDescription)

-- | Describes Amazon Kinesis stream configured as the destination where
--   output is written.
odKinesisStreamsOutputDescription :: Lens' OutputDescription (Maybe KinesisStreamsOutputDescription)

-- | Name of the in-application stream configured as output.
odName :: Lens' OutputDescription (Maybe Text)

-- | Describes the AWS Lambda function configured as the destination where
--   output is written.
odLambdaOutputDescription :: Lens' OutputDescription (Maybe LambdaOutputDescription)

-- | Describes updates to the output configuration identified by the
--   <tt>OutputId</tt> .
--   
--   <i>See:</i> <a>outputUpdate</a> smart constructor.
data OutputUpdate

-- | Creates a value of <a>OutputUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouKinesisStreamsOutputUpdate</a> - Describes an Amazon Kinesis
--   stream as the destination for the output.</li>
--   <li><a>ouDestinationSchemaUpdate</a> - Describes the data format when
--   records are written to the destination. For more information, see
--   <a>Configuring Application Output</a> .</li>
--   <li><a>ouKinesisFirehoseOutputUpdate</a> - Describes an Amazon Kinesis
--   Firehose delivery stream as the destination for the output.</li>
--   <li><a>ouNameUpdate</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.</li>
--   <li><a>ouLambdaOutputUpdate</a> - Describes an AWS Lambda function as
--   the destination for the output.</li>
--   <li><a>ouOutputId</a> - Identifies the specific output configuration
--   that you want to update.</li>
--   </ul>
outputUpdate :: Text -> OutputUpdate

-- | Describes an Amazon Kinesis stream as the destination for the output.
ouKinesisStreamsOutputUpdate :: Lens' OutputUpdate (Maybe KinesisStreamsOutputUpdate)

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
ouDestinationSchemaUpdate :: Lens' OutputUpdate (Maybe DestinationSchema)

-- | Describes an Amazon Kinesis Firehose delivery stream as the
--   destination for the output.
ouKinesisFirehoseOutputUpdate :: Lens' OutputUpdate (Maybe KinesisFirehoseOutputUpdate)

-- | 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)

-- | Describes an AWS Lambda function as the destination for the output.
ouLambdaOutputUpdate :: Lens' OutputUpdate (Maybe LambdaOutputUpdate)

-- | Identifies the specific output configuration that you want to update.
ouOutputId :: Lens' OutputUpdate Text

-- | 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.
--   
--   <i>See:</i> <a>recordColumn</a> smart constructor.
data RecordColumn

-- | Creates a value of <a>RecordColumn</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcMapping</a> - Reference to the data element in the streaming
--   input of the reference data source.</li>
--   <li><a>rcName</a> - Name of the column created in the in-application
--   input stream or reference table.</li>
--   <li><a>rcSqlType</a> - Type of column created in the in-application
--   input stream or reference table.</li>
--   </ul>
recordColumn :: Text -> Text -> RecordColumn

-- | Reference to the data element in the streaming input of the reference
--   data source.
rcMapping :: Lens' RecordColumn (Maybe Text)

-- | Name of the column created in the in-application input stream or
--   reference table.
rcName :: Lens' RecordColumn Text

-- | Type of column created in the in-application input stream or reference
--   table.
rcSqlType :: Lens' RecordColumn Text

-- | Describes the record format and relevant mapping information that
--   should be applied to schematize the records on the stream.
--   
--   <i>See:</i> <a>recordFormat</a> smart constructor.
data RecordFormat

-- | Creates a value of <a>RecordFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rfMappingParameters</a> - 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.</li>
--   <li><a>rfRecordFormatType</a> - The type of record format.</li>
--   </ul>
recordFormat :: RecordFormatType -> 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.
rfMappingParameters :: Lens' RecordFormat (Maybe MappingParameters)

-- | The type of record format.
rfRecordFormatType :: Lens' RecordFormat RecordFormatType

-- | 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.
--   
--   <i>See:</i> <a>referenceDataSource</a> smart constructor.
data ReferenceDataSource

-- | Creates a value of <a>ReferenceDataSource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsS3ReferenceDataSource</a> - 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
--   <tt>UpdateApplication</tt> operation to trigger reloading of data into
--   your application.</li>
--   <li><a>rdsTableName</a> - Name of the in-application table to
--   create.</li>
--   <li><a>rdsReferenceSchema</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.</li>
--   </ul>
referenceDataSource :: Text -> SourceSchema -> 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 <tt>UpdateApplication</tt> operation to trigger reloading of
--   data into your application.
rdsS3ReferenceDataSource :: Lens' ReferenceDataSource (Maybe S3ReferenceDataSource)

-- | Name of the in-application table to create.
rdsTableName :: Lens' ReferenceDataSource 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.
rdsReferenceSchema :: Lens' ReferenceDataSource SourceSchema

-- | Describes the reference data source configured for an application.
--   
--   <i>See:</i> <a>referenceDataSourceDescription</a> smart constructor.
data ReferenceDataSourceDescription

-- | Creates a value of <a>ReferenceDataSourceDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsdReferenceSchema</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.</li>
--   <li><a>rdsdReferenceId</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
--   <tt>AddApplicationReferenceDataSource</tt> operation.</li>
--   <li><a>rdsdTableName</a> - The in-application table name created by
--   the specific reference data source configuration.</li>
--   <li><a>rdsdS3ReferenceDataSourceDescription</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.</li>
--   </ul>
referenceDataSourceDescription :: Text -> Text -> S3ReferenceDataSourceDescription -> 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.
rdsdReferenceSchema :: Lens' ReferenceDataSourceDescription (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 <tt>AddApplicationReferenceDataSource</tt>
--   operation.
rdsdReferenceId :: Lens' ReferenceDataSourceDescription Text

-- | The in-application table name created by the specific reference data
--   source configuration.
rdsdTableName :: Lens' ReferenceDataSourceDescription 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.
rdsdS3ReferenceDataSourceDescription :: Lens' ReferenceDataSourceDescription S3ReferenceDataSourceDescription

-- | 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.
--   
--   <i>See:</i> <a>referenceDataSourceUpdate</a> smart constructor.
data ReferenceDataSourceUpdate

-- | Creates a value of <a>ReferenceDataSourceUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsuTableNameUpdate</a> - In-application table name that is
--   created by this update.</li>
--   <li><a>rdsuS3ReferenceDataSourceUpdate</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.</li>
--   <li><a>rdsuReferenceSchemaUpdate</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.</li>
--   <li><a>rdsuReferenceId</a> - ID of the reference data source being
--   updated. You can use the <tt>DescribeApplication</tt> operation to get
--   this value.</li>
--   </ul>
referenceDataSourceUpdate :: Text -> ReferenceDataSourceUpdate

-- | In-application table name that is created by this update.
rdsuTableNameUpdate :: Lens' ReferenceDataSourceUpdate (Maybe Text)

-- | 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)

-- | 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)

-- | ID of the reference data source being updated. You can use the
--   <tt>DescribeApplication</tt> operation to get this value.
rdsuReferenceId :: Lens' ReferenceDataSourceUpdate Text

-- | 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.
--   
--   <i>See:</i> <a>s3Configuration</a> smart constructor.
data S3Configuration

-- | Creates a value of <a>S3Configuration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scRoleARN</a> - IAM ARN of the role used to access the
--   data.</li>
--   <li><a>scBucketARN</a> - ARN of the S3 bucket that contains the
--   data.</li>
--   <li><a>scFileKey</a> - The name of the object that contains the
--   data.</li>
--   </ul>
s3Configuration :: Text -> Text -> Text -> S3Configuration

-- | IAM ARN of the role used to access the data.
scRoleARN :: Lens' S3Configuration Text

-- | ARN of the S3 bucket that contains the data.
scBucketARN :: Lens' S3Configuration Text

-- | The name of the object that contains the data.
scFileKey :: Lens' S3Configuration Text

-- | 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 <tt>UpdateApplication</tt>
--   operation to trigger reloading of data into your application.
--   
--   <i>See:</i> <a>s3ReferenceDataSource</a> smart constructor.
data S3ReferenceDataSource

-- | Creates a value of <a>S3ReferenceDataSource</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsBucketARN</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsFileKey</a> - Object key name containing reference
--   data.</li>
--   <li><a>srdsReferenceRoleARN</a> - ARN of the IAM role that the service
--   can assume to read data on your behalf. This role must have permission
--   for the <tt>s3:GetObject</tt> action on the object and trust policy
--   that allows Amazon Kinesis Analytics service principal to assume this
--   role.</li>
--   </ul>
s3ReferenceDataSource :: Text -> Text -> Text -> S3ReferenceDataSource

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsBucketARN :: Lens' S3ReferenceDataSource Text

-- | Object key name containing reference data.
srdsFileKey :: Lens' S3ReferenceDataSource Text

-- | ARN of the IAM role that the service can assume to read data on your
--   behalf. This role must have permission for the <tt>s3:GetObject</tt>
--   action on the object and trust policy that allows Amazon Kinesis
--   Analytics service principal to assume this role.
srdsReferenceRoleARN :: Lens' S3ReferenceDataSource Text

-- | Provides the bucket name and object key name that stores the reference
--   data.
--   
--   <i>See:</i> <a>s3ReferenceDataSourceDescription</a> smart constructor.
data S3ReferenceDataSourceDescription

-- | Creates a value of <a>S3ReferenceDataSourceDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsdBucketARN</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsdFileKey</a> - Amazon S3 object key name.</li>
--   <li><a>srdsdReferenceRoleARN</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.</li>
--   </ul>
s3ReferenceDataSourceDescription :: Text -> Text -> Text -> S3ReferenceDataSourceDescription

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsdBucketARN :: Lens' S3ReferenceDataSourceDescription Text

-- | Amazon S3 object key name.
srdsdFileKey :: Lens' S3ReferenceDataSourceDescription 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.
srdsdReferenceRoleARN :: Lens' S3ReferenceDataSourceDescription Text

-- | 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.
--   
--   <i>See:</i> <a>s3ReferenceDataSourceUpdate</a> smart constructor.
data S3ReferenceDataSourceUpdate

-- | Creates a value of <a>S3ReferenceDataSourceUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsuBucketARNUpdate</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsuFileKeyUpdate</a> - Object key name.</li>
--   <li><a>srdsuReferenceRoleARNUpdate</a> - ARN of the IAM role that
--   Amazon Kinesis Analytics can assume to read the Amazon S3 object and
--   populate the in-application.</li>
--   </ul>
s3ReferenceDataSourceUpdate :: S3ReferenceDataSourceUpdate

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsuBucketARNUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)

-- | Object key name.
srdsuFileKeyUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)

-- | 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)

-- | 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.
--   
--   <i>See:</i> <a>sourceSchema</a> smart constructor.
data SourceSchema

-- | Creates a value of <a>SourceSchema</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssRecordEncoding</a> - Specifies the encoding of the records in
--   the streaming source. For example, UTF-8.</li>
--   <li><a>ssRecordFormat</a> - Specifies the format of the records on the
--   streaming source.</li>
--   <li><a>ssRecordColumns</a> - A list of <tt>RecordColumn</tt>
--   objects.</li>
--   </ul>
sourceSchema :: RecordFormat -> NonEmpty RecordColumn -> SourceSchema

-- | Specifies the encoding of the records in the streaming source. For
--   example, UTF-8.
ssRecordEncoding :: Lens' SourceSchema (Maybe Text)

-- | Specifies the format of the records on the streaming source.
ssRecordFormat :: Lens' SourceSchema RecordFormat

-- | A list of <tt>RecordColumn</tt> objects.
ssRecordColumns :: Lens' SourceSchema (NonEmpty RecordColumn)


-- | Stops the application from processing input data. You can stop an
--   application only if it is in the running state. You can use the
--   <tt>DescribeApplication</tt> 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
--   <tt>kinesisanalytics:StopApplication</tt> action.
module Network.AWS.KinesisAnalytics.StopApplication

-- | Creates a value of <a>StopApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sApplicationName</a> - Name of the running application to
--   stop.</li>
--   </ul>
stopApplication :: Text -> StopApplication

-- | <i>See:</i> <a>stopApplication</a> smart constructor.
data StopApplication

-- | Name of the running application to stop.
sApplicationName :: Lens' StopApplication Text

-- | Creates a value of <a>StopApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
stopApplicationResponse :: Int -> StopApplicationResponse

-- | <i>See:</i> <a>stopApplicationResponse</a> smart constructor.
data StopApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
srsResponseStatus :: Lens' StopApplicationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.StopApplication.StopApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.StopApplication.StopApplication


-- | 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 <tt>READY</tt> for you to start an
--   application. You can get the application status in the console or
--   using the <tt>DescribeApplication</tt> operation.
--   
--   After you start the application, you can stop the application from
--   processing the input by calling the <tt>StopApplication</tt>
--   operation.
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:StartApplication</tt> action.
module Network.AWS.KinesisAnalytics.StartApplication

-- | Creates a value of <a>StartApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saApplicationName</a> - Name of the application.</li>
--   <li><a>saInputConfigurations</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.</li>
--   </ul>
startApplication :: Text -> StartApplication

-- | <i>See:</i> <a>startApplication</a> smart constructor.
data StartApplication

-- | Name of the application.
saApplicationName :: Lens' StartApplication 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.
saInputConfigurations :: Lens' StartApplication [InputConfiguration]

-- | Creates a value of <a>StartApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
startApplicationResponse :: Int -> StartApplicationResponse

-- | <i>See:</i> <a>startApplicationResponse</a> smart constructor.
data StartApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
sarsResponseStatus :: Lens' StartApplicationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.StartApplication.StartApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.StartApplication.StartApplication


-- | 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 <tt>HasMoreApplications</tt> value as true, you can send another
--   request by adding the <tt>ExclusiveStartApplicationName</tt> 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
--   <tt>DescribeApplication</tt> .
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:ListApplications</tt> action.
module Network.AWS.KinesisAnalytics.ListApplications

-- | Creates a value of <a>ListApplications</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>laLimit</a> - Maximum number of applications to list.</li>
--   <li><a>laExclusiveStartApplicationName</a> - 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.</li>
--   </ul>
listApplications :: ListApplications

-- | <i>See:</i> <a>listApplications</a> smart constructor.
data ListApplications

-- | Maximum number of applications to list.
laLimit :: Lens' ListApplications (Maybe Natural)

-- | 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)

-- | Creates a value of <a>ListApplicationsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>larsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>larsApplicationSummaries</a> - List of
--   <tt>ApplicationSummary</tt> objects.</li>
--   <li><a>larsHasMoreApplications</a> - Returns true if there are more
--   applications to retrieve.</li>
--   </ul>
listApplicationsResponse :: Int -> Bool -> ListApplicationsResponse

-- | <i>See:</i> <a>listApplicationsResponse</a> smart constructor.
data ListApplicationsResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
larsResponseStatus :: Lens' ListApplicationsResponse Int

-- | List of <tt>ApplicationSummary</tt> objects.
larsApplicationSummaries :: Lens' ListApplicationsResponse [ApplicationSummary]

-- | Returns true if there are more applications to retrieve.
larsHasMoreApplications :: Lens' ListApplicationsResponse Bool
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Data.Data.Data Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance GHC.Show.Show Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance GHC.Read.Read Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.ListApplications.ListApplications
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.ListApplications.ListApplications


-- | 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 <a>Configuring
--   Application Input</a> . 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
--   <tt>kinesisanalytics:DiscoverInputSchema</tt> action.
module Network.AWS.KinesisAnalytics.DiscoverInputSchema

-- | Creates a value of <a>DiscoverInputSchema</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>disInputStartingPositionConfiguration</a> - Point at which you
--   want Amazon Kinesis Analytics to start reading records from the
--   specified streaming source discovery purposes.</li>
--   <li><a>disInputProcessingConfiguration</a> - The
--   <a>InputProcessingConfiguration</a> to use to preprocess the records
--   before discovering the schema of the records.</li>
--   <li><a>disS3Configuration</a> - Specify this parameter to discover a
--   schema from data in an S3 object.</li>
--   <li><a>disResourceARN</a> - Amazon Resource Name (ARN) of the
--   streaming source.</li>
--   <li><a>disRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream on your behalf.</li>
--   </ul>
discoverInputSchema :: DiscoverInputSchema

-- | <i>See:</i> <a>discoverInputSchema</a> smart constructor.
data DiscoverInputSchema

-- | Point at which you want Amazon Kinesis Analytics to start reading
--   records from the specified streaming source discovery purposes.
disInputStartingPositionConfiguration :: Lens' DiscoverInputSchema (Maybe InputStartingPositionConfiguration)

-- | The <a>InputProcessingConfiguration</a> to use to preprocess the
--   records before discovering the schema of the records.
disInputProcessingConfiguration :: Lens' DiscoverInputSchema (Maybe InputProcessingConfiguration)

-- | Specify this parameter to discover a schema from data in an S3 object.
disS3Configuration :: Lens' DiscoverInputSchema (Maybe S3Configuration)

-- | Amazon Resource Name (ARN) of the streaming source.
disResourceARN :: Lens' DiscoverInputSchema (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream on your behalf.
disRoleARN :: Lens' DiscoverInputSchema (Maybe Text)

-- | Creates a value of <a>DiscoverInputSchemaResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>disrsRawInputRecords</a> - Raw stream data that was sampled to
--   infer the schema.</li>
--   <li><a>disrsInputSchema</a> - 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.</li>
--   <li><a>disrsProcessedInputRecords</a> - Stream data that was modified
--   by the processor specified in the
--   <tt>InputProcessingConfiguration</tt> parameter.</li>
--   <li><a>disrsParsedInputRecords</a> - An array of elements, where each
--   element corresponds to a row in a stream record (a stream record can
--   have more than one row).</li>
--   <li><a>disrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
discoverInputSchemaResponse :: Int -> DiscoverInputSchemaResponse

-- | <i>See:</i> <a>discoverInputSchemaResponse</a> smart constructor.
data DiscoverInputSchemaResponse

-- | Raw stream data that was sampled to infer the schema.
disrsRawInputRecords :: Lens' DiscoverInputSchemaResponse [Text]

-- | 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)

-- | Stream data that was modified by the processor specified in the
--   <tt>InputProcessingConfiguration</tt> parameter.
disrsProcessedInputRecords :: Lens' DiscoverInputSchemaResponse [Text]

-- | 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]]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
disrsResponseStatus :: Lens' DiscoverInputSchemaResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Data.Data.Data Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchema


-- | Returns information about a specific Amazon Kinesis Analytics
--   application.
--   
--   If you want to retrieve a list of all applications in your account,
--   use the <tt>ListApplications</tt> operation.
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:DescribeApplication</tt> action. You can use
--   <tt>DescribeApplication</tt> to get the current application versionId,
--   which you need to call other operations such as <tt>Update</tt> .
module Network.AWS.KinesisAnalytics.DescribeApplication

-- | Creates a value of <a>DescribeApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daApplicationName</a> - Name of the application.</li>
--   </ul>
describeApplication :: Text -> DescribeApplication

-- | <i>See:</i> <a>describeApplication</a> smart constructor.
data DescribeApplication

-- | Name of the application.
daApplicationName :: Lens' DescribeApplication Text

-- | Creates a value of <a>DescribeApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>darsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>darsApplicationDetail</a> - Provides a description of the
--   application, such as the application Amazon Resource Name (ARN),
--   status, latest version, and input and output configuration
--   details.</li>
--   </ul>
describeApplicationResponse :: Int -> ApplicationDetail -> DescribeApplicationResponse

-- | <i>See:</i> <a>describeApplicationResponse</a> smart constructor.
data DescribeApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
darsResponseStatus :: Lens' DescribeApplicationResponse Int

-- | 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
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplication


-- | 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
--   <tt>AddApplicationReferenceDataSource</tt> operation.
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics.DeleteApplicationReferenceDataSource</tt> action.
module Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource

-- | Creates a value of <a>DeleteApplicationReferenceDataSource</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dardsApplicationName</a> - Name of an existing
--   application.</li>
--   <li><a>dardsCurrentApplicationVersionId</a> - Version of the
--   application. You can use the <tt>DescribeApplication</tt> operation to
--   get the current application version. If the version specified is not
--   the current version, the <tt>ConcurrentModificationException</tt> is
--   returned.</li>
--   <li><a>dardsReferenceId</a> - ID of the reference data source. When
--   you add a reference data source to your application using the
--   <tt>AddApplicationReferenceDataSource</tt> , Amazon Kinesis Analytics
--   assigns an ID. You can use the <tt>DescribeApplication</tt> operation
--   to get the reference ID.</li>
--   </ul>
deleteApplicationReferenceDataSource :: Text -> Natural -> Text -> DeleteApplicationReferenceDataSource

-- | <i>See:</i> <a>deleteApplicationReferenceDataSource</a> smart
--   constructor.
data DeleteApplicationReferenceDataSource

-- | Name of an existing application.
dardsApplicationName :: Lens' DeleteApplicationReferenceDataSource Text

-- | Version of the application. You can use the
--   <tt>DescribeApplication</tt> operation to get the current application
--   version. If the version specified is not the current version, the
--   <tt>ConcurrentModificationException</tt> is returned.
dardsCurrentApplicationVersionId :: Lens' DeleteApplicationReferenceDataSource Natural

-- | ID of the reference data source. When you add a reference data source
--   to your application using the
--   <tt>AddApplicationReferenceDataSource</tt> , Amazon Kinesis Analytics
--   assigns an ID. You can use the <tt>DescribeApplication</tt> operation
--   to get the reference ID.
dardsReferenceId :: Lens' DeleteApplicationReferenceDataSource Text

-- | Creates a value of <a>DeleteApplicationReferenceDataSourceResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dardsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteApplicationReferenceDataSourceResponse :: Int -> DeleteApplicationReferenceDataSourceResponse

-- | <i>See:</i> <a>deleteApplicationReferenceDataSourceResponse</a> smart
--   constructor.
data DeleteApplicationReferenceDataSourceResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dardsrsResponseStatus :: Lens' DeleteApplicationReferenceDataSourceResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSource


-- | 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
--   <tt>kinesisanalytics:DeleteApplicationOutput</tt> action.
module Network.AWS.KinesisAnalytics.DeleteApplicationOutput

-- | Creates a value of <a>DeleteApplicationOutput</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daoApplicationName</a> - Amazon Kinesis Analytics application
--   name.</li>
--   <li><a>daoCurrentApplicationVersionId</a> - Amazon Kinesis Analytics
--   application version. You can use the <tt>DescribeApplication</tt>
--   operation to get the current application version. If the version
--   specified is not the current version, the
--   <tt>ConcurrentModificationException</tt> is returned.</li>
--   <li><a>daoOutputId</a> - 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
--   <tt>AddApplicationOutput</tt> 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
--   <tt>DescribeApplication</tt> operation to get the specific
--   <tt>OutputId</tt> .</li>
--   </ul>
deleteApplicationOutput :: Text -> Natural -> Text -> DeleteApplicationOutput

-- | <i>See:</i> <a>deleteApplicationOutput</a> smart constructor.
data DeleteApplicationOutput

-- | Amazon Kinesis Analytics application name.
daoApplicationName :: Lens' DeleteApplicationOutput Text

-- | Amazon Kinesis Analytics application version. You can use the
--   <tt>DescribeApplication</tt> operation to get the current application
--   version. If the version specified is not the current version, the
--   <tt>ConcurrentModificationException</tt> is returned.
daoCurrentApplicationVersionId :: Lens' DeleteApplicationOutput 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 <tt>AddApplicationOutput</tt> 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 <tt>DescribeApplication</tt> operation
--   to get the specific <tt>OutputId</tt> .
daoOutputId :: Lens' DeleteApplicationOutput Text

-- | Creates a value of <a>DeleteApplicationOutputResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daorsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteApplicationOutputResponse :: Int -> DeleteApplicationOutputResponse

-- | <i>See:</i> <a>deleteApplicationOutputResponse</a> smart constructor.
data DeleteApplicationOutputResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
daorsResponseStatus :: Lens' DeleteApplicationOutputResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutput


-- | Deletes an <a>InputProcessingConfiguration</a> from an input.
module Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration

-- | Creates a value of
--   <a>DeleteApplicationInputProcessingConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daipcApplicationName</a> - The Kinesis Analytics application
--   name.</li>
--   <li><a>daipcCurrentApplicationVersionId</a> - The version ID of the
--   Kinesis Analytics application.</li>
--   <li><a>daipcInputId</a> - 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
--   <tt>DescribeApplication</tt> operation.</li>
--   </ul>
deleteApplicationInputProcessingConfiguration :: Text -> Natural -> Text -> DeleteApplicationInputProcessingConfiguration

-- | <i>See:</i> <a>deleteApplicationInputProcessingConfiguration</a> smart
--   constructor.
data DeleteApplicationInputProcessingConfiguration

-- | The Kinesis Analytics application name.
daipcApplicationName :: Lens' DeleteApplicationInputProcessingConfiguration Text

-- | The version ID of the Kinesis Analytics application.
daipcCurrentApplicationVersionId :: Lens' DeleteApplicationInputProcessingConfiguration 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 <tt>DescribeApplication</tt> operation.
daipcInputId :: Lens' DeleteApplicationInputProcessingConfiguration Text

-- | Creates a value of
--   <a>DeleteApplicationInputProcessingConfigurationResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daipcrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteApplicationInputProcessingConfigurationResponse :: Int -> DeleteApplicationInputProcessingConfigurationResponse

-- | <i>See:</i>
--   <a>deleteApplicationInputProcessingConfigurationResponse</a> smart
--   constructor.
data DeleteApplicationInputProcessingConfigurationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
daipcrsResponseStatus :: Lens' DeleteApplicationInputProcessingConfigurationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfigurationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DeleteApplicationInputProcessingConfiguration.DeleteApplicationInputProcessingConfiguration


-- | Deletes a CloudWatch log stream from an application. For more
--   information about using CloudWatch log streams with Amazon Kinesis
--   Analytics applications, see <a>Working with Amazon CloudWatch Logs</a>
--   .
module Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption

-- | Creates a value of <a>DeleteApplicationCloudWatchLoggingOption</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dacwloApplicationName</a> - The Kinesis Analytics application
--   name.</li>
--   <li><a>dacwloCurrentApplicationVersionId</a> - The version ID of the
--   Kinesis Analytics application.</li>
--   <li><a>dacwloCloudWatchLoggingOptionId</a> - The
--   <tt>CloudWatchLoggingOptionId</tt> of the CloudWatch logging option to
--   delete. You can get the <tt>CloudWatchLoggingOptionId</tt> by using
--   the <tt>DescribeApplication</tt> operation.</li>
--   </ul>
deleteApplicationCloudWatchLoggingOption :: Text -> Natural -> Text -> DeleteApplicationCloudWatchLoggingOption

-- | <i>See:</i> <a>deleteApplicationCloudWatchLoggingOption</a> smart
--   constructor.
data DeleteApplicationCloudWatchLoggingOption

-- | The Kinesis Analytics application name.
dacwloApplicationName :: Lens' DeleteApplicationCloudWatchLoggingOption Text

-- | The version ID of the Kinesis Analytics application.
dacwloCurrentApplicationVersionId :: Lens' DeleteApplicationCloudWatchLoggingOption Natural

-- | The <tt>CloudWatchLoggingOptionId</tt> of the CloudWatch logging
--   option to delete. You can get the <tt>CloudWatchLoggingOptionId</tt>
--   by using the <tt>DescribeApplication</tt> operation.
dacwloCloudWatchLoggingOptionId :: Lens' DeleteApplicationCloudWatchLoggingOption Text

-- | Creates a value of
--   <a>DeleteApplicationCloudWatchLoggingOptionResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dacwlorsResponseStatus</a> - -- | The response status
--   code.</li>
--   </ul>
deleteApplicationCloudWatchLoggingOptionResponse :: Int -> DeleteApplicationCloudWatchLoggingOptionResponse

-- | <i>See:</i> <a>deleteApplicationCloudWatchLoggingOptionResponse</a>
--   smart constructor.
data DeleteApplicationCloudWatchLoggingOptionResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dacwlorsResponseStatus :: Lens' DeleteApplicationCloudWatchLoggingOptionResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOptionResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DeleteApplicationCloudWatchLoggingOption.DeleteApplicationCloudWatchLoggingOption


-- | 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
--   <tt>kinesisanalytics:DeleteApplication</tt> action.
module Network.AWS.KinesisAnalytics.DeleteApplication

-- | Creates a value of <a>DeleteApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dApplicationName</a> - Name of the Amazon Kinesis Analytics
--   application to delete.</li>
--   <li><a>dCreateTimestamp</a> - You can use the
--   <tt>DescribeApplication</tt> operation to get this value.</li>
--   </ul>
deleteApplication :: Text -> UTCTime -> DeleteApplication

-- | <i>See:</i> <a>deleteApplication</a> smart constructor.
data DeleteApplication

-- | Name of the Amazon Kinesis Analytics application to delete.
dApplicationName :: Lens' DeleteApplication Text

-- | You can use the <tt>DescribeApplication</tt> operation to get this
--   value.
dCreateTimestamp :: Lens' DeleteApplication UTCTime

-- | Creates a value of <a>DeleteApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteApplicationResponse :: Int -> DeleteApplicationResponse

-- | <i>See:</i> <a>deleteApplicationResponse</a> smart constructor.
data DeleteApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DeleteApplicationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplication


-- | 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 <a>How it Works</a> .
--   
--   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 <tt>kinesisanalytics:CreateApplication</tt>
--   action.
--   
--   For introductory exercises to create an Amazon Kinesis Analytics
--   application, see <a>Getting Started</a> .
module Network.AWS.KinesisAnalytics.CreateApplication

-- | Creates a value of <a>CreateApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>caApplicationDescription</a> - Summary description of the
--   application.</li>
--   <li><a>caInputs</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.</li>
--   <li><a>caCloudWatchLoggingOptions</a> - Use this parameter to
--   configure a CloudWatch log stream to monitor application configuration
--   errors. For more information, see <a>Working with Amazon CloudWatch
--   Logs</a> .</li>
--   <li><a>caOutputs</a> - 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.</li>
--   <li><a>caApplicationCode</a> - 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
--   <a>Application Code</a> . 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 <tt>Outputs</tt> . For
--   example, if your <tt>Outputs</tt> defines output streams named
--   <tt>ExampleOutputStream1</tt> and <tt>ExampleOutputStream2</tt> , then
--   your application code must create these streams.</li>
--   <li><a>caApplicationName</a> - Name of your Amazon Kinesis Analytics
--   application (for example, <tt>sample-app</tt> ).</li>
--   </ul>
createApplication :: Text -> CreateApplication

-- | TBD
--   
--   <i>See:</i> <a>createApplication</a> smart constructor.
data CreateApplication

-- | Summary description of the application.
caApplicationDescription :: Lens' CreateApplication (Maybe Text)

-- | 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]

-- | Use this parameter to configure a CloudWatch log stream to monitor
--   application configuration errors. For more information, see <a>Working
--   with Amazon CloudWatch Logs</a> .
caCloudWatchLoggingOptions :: Lens' CreateApplication [CloudWatchLoggingOption]

-- | 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]

-- | 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 <a>Application Code</a> .
--   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 <tt>Outputs</tt> . For example, if your
--   <tt>Outputs</tt> defines output streams named
--   <tt>ExampleOutputStream1</tt> and <tt>ExampleOutputStream2</tt> , then
--   your application code must create these streams.
caApplicationCode :: Lens' CreateApplication (Maybe Text)

-- | Name of your Amazon Kinesis Analytics application (for example,
--   <tt>sample-app</tt> ).
caApplicationName :: Lens' CreateApplication Text

-- | Creates a value of <a>CreateApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>carsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>carsApplicationSummary</a> - In response to your
--   <tt>CreateApplication</tt> 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.</li>
--   </ul>
createApplicationResponse :: Int -> ApplicationSummary -> CreateApplicationResponse

-- | TBD
--   
--   <i>See:</i> <a>createApplicationResponse</a> smart constructor.
data CreateApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
carsResponseStatus :: Lens' CreateApplicationResponse Int

-- | In response to your <tt>CreateApplication</tt> 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
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.CreateApplication.CreateApplication


-- | 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 <a>Configuring Application Input</a> .
--   For the limits on data sources you can add to your application, see
--   <a>Limits</a> .
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:AddApplicationOutput</tt> action.
module Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource

-- | Creates a value of <a>AddApplicationReferenceDataSource</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aardsApplicationName</a> - Name of an existing
--   application.</li>
--   <li><a>aardsCurrentApplicationVersionId</a> - Version of the
--   application for which you are adding the reference data source. You
--   can use the <tt>DescribeApplication</tt> operation to get the current
--   application version. If the version specified is not the current
--   version, the <tt>ConcurrentModificationException</tt> is
--   returned.</li>
--   <li><a>aardsReferenceDataSource</a> - 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.</li>
--   </ul>
addApplicationReferenceDataSource :: Text -> Natural -> ReferenceDataSource -> AddApplicationReferenceDataSource

-- | <i>See:</i> <a>addApplicationReferenceDataSource</a> smart
--   constructor.
data AddApplicationReferenceDataSource

-- | Name of an existing application.
aardsApplicationName :: Lens' AddApplicationReferenceDataSource Text

-- | Version of the application for which you are adding the reference data
--   source. You can use the <tt>DescribeApplication</tt> operation to get
--   the current application version. If the version specified is not the
--   current version, the <tt>ConcurrentModificationException</tt> is
--   returned.
aardsCurrentApplicationVersionId :: Lens' AddApplicationReferenceDataSource 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.
aardsReferenceDataSource :: Lens' AddApplicationReferenceDataSource ReferenceDataSource

-- | Creates a value of <a>AddApplicationReferenceDataSourceResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aardsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
addApplicationReferenceDataSourceResponse :: Int -> AddApplicationReferenceDataSourceResponse

-- | <i>See:</i> <a>addApplicationReferenceDataSourceResponse</a> smart
--   constructor.
data AddApplicationReferenceDataSourceResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
aardsrsResponseStatus :: Lens' AddApplicationReferenceDataSourceResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSource


-- | 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 <a>Understanding
--   Application Output (Destination)</a> .
--   
--   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 <tt>DescribeApplication</tt> operation to
--   find the current application version.
--   
--   For the limits on the number of application inputs and outputs you can
--   configure, see <a>Limits</a> .
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:AddApplicationOutput</tt> action.
module Network.AWS.KinesisAnalytics.AddApplicationOutput

-- | Creates a value of <a>AddApplicationOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaoApplicationName</a> - Name of the application to which you
--   want to add the output configuration.</li>
--   <li><a>aaoCurrentApplicationVersionId</a> - Version of the application
--   to which you want to add the output configuration. You can use the
--   <tt>DescribeApplication</tt> operation to get the current application
--   version. If the version specified is not the current version, the
--   <tt>ConcurrentModificationException</tt> is returned.</li>
--   <li><a>aaoOutput</a> - 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.</li>
--   </ul>
addApplicationOutput :: Text -> Natural -> Output -> AddApplicationOutput

-- | <i>See:</i> <a>addApplicationOutput</a> smart constructor.
data AddApplicationOutput

-- | Name of the application to which you want to add the output
--   configuration.
aaoApplicationName :: Lens' AddApplicationOutput Text

-- | Version of the application to which you want to add the output
--   configuration. You can use the <tt>DescribeApplication</tt> operation
--   to get the current application version. If the version specified is
--   not the current version, the <tt>ConcurrentModificationException</tt>
--   is returned.
aaoCurrentApplicationVersionId :: Lens' AddApplicationOutput 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 Amazon Lambda function), and
--   record the formation to use when writing to the destination.
aaoOutput :: Lens' AddApplicationOutput Output

-- | Creates a value of <a>AddApplicationOutputResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaorsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
addApplicationOutputResponse :: Int -> AddApplicationOutputResponse

-- | <i>See:</i> <a>addApplicationOutputResponse</a> smart constructor.
data AddApplicationOutputResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
aaorsResponseStatus :: Lens' AddApplicationOutputResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutput


-- | Adds an <a>InputProcessingConfiguration</a> 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 <a>AWS Lambda</a> .
module Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration

-- | Creates a value of <a>AddApplicationInputProcessingConfiguration</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaipcApplicationName</a> - Name of the application to which you
--   want to add the input processing configuration.</li>
--   <li><a>aaipcCurrentApplicationVersionId</a> - Version of the
--   application to which you want to add the input processing
--   configuration. You can use the <tt>DescribeApplication</tt> operation
--   to get the current application version. If the version specified is
--   not the current version, the <tt>ConcurrentModificationException</tt>
--   is returned.</li>
--   <li><a>aaipcInputId</a> - 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 <tt>DescribeApplication</tt>
--   operation.</li>
--   <li><a>aaipcInputProcessingConfiguration</a> - The
--   <a>InputProcessingConfiguration</a> to add to the application.</li>
--   </ul>
addApplicationInputProcessingConfiguration :: Text -> Natural -> Text -> InputProcessingConfiguration -> AddApplicationInputProcessingConfiguration

-- | <i>See:</i> <a>addApplicationInputProcessingConfiguration</a> smart
--   constructor.
data AddApplicationInputProcessingConfiguration

-- | Name of the application to which you want to add the input processing
--   configuration.
aaipcApplicationName :: Lens' AddApplicationInputProcessingConfiguration Text

-- | Version of the application to which you want to add the input
--   processing configuration. You can use the <tt>DescribeApplication</tt>
--   operation to get the current application version. If the version
--   specified is not the current version, the
--   <tt>ConcurrentModificationException</tt> is returned.
aaipcCurrentApplicationVersionId :: Lens' AddApplicationInputProcessingConfiguration 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 <tt>DescribeApplication</tt> operation.
aaipcInputId :: Lens' AddApplicationInputProcessingConfiguration Text

-- | The <a>InputProcessingConfiguration</a> to add to the application.
aaipcInputProcessingConfiguration :: Lens' AddApplicationInputProcessingConfiguration InputProcessingConfiguration

-- | Creates a value of
--   <a>AddApplicationInputProcessingConfigurationResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaipcrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
addApplicationInputProcessingConfigurationResponse :: Int -> AddApplicationInputProcessingConfigurationResponse

-- | <i>See:</i> <a>addApplicationInputProcessingConfigurationResponse</a>
--   smart constructor.
data AddApplicationInputProcessingConfigurationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
aaipcrsResponseStatus :: Lens' AddApplicationInputProcessingConfigurationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfigurationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.AddApplicationInputProcessingConfiguration.AddApplicationInputProcessingConfiguration


-- | Adds a streaming source to your Amazon Kinesis application. For
--   conceptual information, see <a>Configuring Application Input</a> .
--   
--   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
--   <tt>CreateApplication</tt> .
--   
--   Any configuration update, including adding a streaming source using
--   this operation, results in a new version of the application. You can
--   use the <tt>DescribeApplication</tt> operation to find the current
--   application version.
--   
--   This operation requires permissions to perform the
--   <tt>kinesisanalytics:AddApplicationInput</tt> action.
module Network.AWS.KinesisAnalytics.AddApplicationInput

-- | Creates a value of <a>AddApplicationInput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaiApplicationName</a> - Name of your existing Amazon Kinesis
--   Analytics application to which you want to add the streaming
--   source.</li>
--   <li><a>aaiCurrentApplicationVersionId</a> - Current version of your
--   Amazon Kinesis Analytics application. You can use the
--   <tt>DescribeApplication</tt> operation to find the current application
--   version.</li>
--   <li><a>aaiInput</a> - The <a>Input</a> to add.</li>
--   </ul>
addApplicationInput :: Text -> Natural -> Input -> AddApplicationInput

-- | <i>See:</i> <a>addApplicationInput</a> smart constructor.
data AddApplicationInput

-- | Name of your existing Amazon Kinesis Analytics application to which
--   you want to add the streaming source.
aaiApplicationName :: Lens' AddApplicationInput Text

-- | Current version of your Amazon Kinesis Analytics application. You can
--   use the <tt>DescribeApplication</tt> operation to find the current
--   application version.
aaiCurrentApplicationVersionId :: Lens' AddApplicationInput Natural

-- | The <a>Input</a> to add.
aaiInput :: Lens' AddApplicationInput Input

-- | Creates a value of <a>AddApplicationInputResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aairsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
addApplicationInputResponse :: Int -> AddApplicationInputResponse

-- | <i>See:</i> <a>addApplicationInputResponse</a> smart constructor.
data AddApplicationInputResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
aairsResponseStatus :: Lens' AddApplicationInputResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInput


-- | Adds a CloudWatch log stream to monitor application configuration
--   errors. For more information about using CloudWatch log streams with
--   Amazon Kinesis Analytics applications, see <a>Working with Amazon
--   CloudWatch Logs</a> .
module Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption

-- | Creates a value of <a>AddApplicationCloudWatchLoggingOption</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aacwloApplicationName</a> - The Kinesis Analytics application
--   name.</li>
--   <li><a>aacwloCurrentApplicationVersionId</a> - The version ID of the
--   Kinesis Analytics application.</li>
--   <li><a>aacwloCloudWatchLoggingOption</a> - 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 <tt>PutLogEvents</tt> policy action enabled.</li>
--   </ul>
addApplicationCloudWatchLoggingOption :: Text -> Natural -> CloudWatchLoggingOption -> AddApplicationCloudWatchLoggingOption

-- | <i>See:</i> <a>addApplicationCloudWatchLoggingOption</a> smart
--   constructor.
data AddApplicationCloudWatchLoggingOption

-- | The Kinesis Analytics application name.
aacwloApplicationName :: Lens' AddApplicationCloudWatchLoggingOption Text

-- | The version ID of the Kinesis Analytics application.
aacwloCurrentApplicationVersionId :: Lens' AddApplicationCloudWatchLoggingOption 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 <tt>PutLogEvents</tt> policy
--   action enabled.
aacwloCloudWatchLoggingOption :: Lens' AddApplicationCloudWatchLoggingOption CloudWatchLoggingOption

-- | Creates a value of
--   <a>AddApplicationCloudWatchLoggingOptionResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aacwlorsResponseStatus</a> - -- | The response status
--   code.</li>
--   </ul>
addApplicationCloudWatchLoggingOptionResponse :: Int -> AddApplicationCloudWatchLoggingOptionResponse

-- | <i>See:</i> <a>addApplicationCloudWatchLoggingOptionResponse</a> smart
--   constructor.
data AddApplicationCloudWatchLoggingOptionResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
aacwlorsResponseStatus :: Lens' AddApplicationCloudWatchLoggingOptionResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Data.Data.Data Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance GHC.Show.Show Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance GHC.Read.Read Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOptionResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.AddApplicationCloudWatchLoggingOption.AddApplicationCloudWatchLoggingOption


-- | 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
--   <tt>CurrentApplicationVersionId</tt> each time you update your
--   application.
--   
--   This operation requires permission for the
--   <tt>kinesisanalytics:UpdateApplication</tt> action.
module Network.AWS.KinesisAnalytics.UpdateApplication

-- | Creates a value of <a>UpdateApplication</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaApplicationName</a> - Name of the Amazon Kinesis Analytics
--   application to update.</li>
--   <li><a>uaCurrentApplicationVersionId</a> - The current application
--   version ID. You can use the <tt>DescribeApplication</tt> operation to
--   get this value.</li>
--   <li><a>uaApplicationUpdate</a> - Describes application updates.</li>
--   </ul>
updateApplication :: Text -> Natural -> ApplicationUpdate -> UpdateApplication

-- | <i>See:</i> <a>updateApplication</a> smart constructor.
data UpdateApplication

-- | Name of the Amazon Kinesis Analytics application to update.
uaApplicationName :: Lens' UpdateApplication Text

-- | The current application version ID. You can use the
--   <tt>DescribeApplication</tt> operation to get this value.
uaCurrentApplicationVersionId :: Lens' UpdateApplication Natural

-- | Describes application updates.
uaApplicationUpdate :: Lens' UpdateApplication ApplicationUpdate

-- | Creates a value of <a>UpdateApplicationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateApplicationResponse :: Int -> UpdateApplicationResponse

-- | <i>See:</i> <a>updateApplicationResponse</a> smart constructor.
data UpdateApplicationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uarsResponseStatus :: Lens' UpdateApplicationResponse Int
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance Data.Data.Data Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance GHC.Show.Show Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance GHC.Read.Read Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance GHC.Generics.Generic Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Data.Data.Data Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance GHC.Show.Show Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance GHC.Read.Read Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance GHC.Classes.Eq Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Network.AWS.Types.AWSRequest Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse
instance Data.Hashable.Class.Hashable Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Network.AWS.Data.Path.ToPath Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication
instance Network.AWS.Data.Query.ToQuery Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplication


module Network.AWS.KinesisAnalytics.Waiters


-- | 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

-- | API version <tt>2015-08-14</tt> of the Amazon Kinesis Analytics SDK
--   configuration.
kinesisAnalytics :: Service

-- | User-provided application configuration is not valid.
_InvalidApplicationConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Discovery failed to get a record from the streaming source because of
--   the Amazon Kinesis Streams ProvisionedThroughputExceededException. For
--   more information, see <a>GetRecords</a> in the Amazon Kinesis Streams
--   API Reference.
_ResourceProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Specified input parameter value is invalid.
_InvalidArgumentException :: AsError a => Getting (First ServiceError) a ServiceError

-- | User-provided application code (query) is invalid. This can be a
--   simple syntax error.
_CodeValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | 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

-- | The service is unavailable, back off and retry the operation.
_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError

-- | 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

-- | Specified application can't be found.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exceeded the number of applications allowed.
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Application is not available for this operation.
_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
data ApplicationStatus
Deleting :: ApplicationStatus
Ready :: ApplicationStatus
Running :: ApplicationStatus
Starting :: ApplicationStatus
Stopping :: ApplicationStatus
Updating :: ApplicationStatus
data InputStartingPosition
LastStoppedPoint :: InputStartingPosition
Now :: InputStartingPosition
TrimHorizon :: InputStartingPosition
data RecordFormatType
CSV :: RecordFormatType
JSON :: RecordFormatType

-- | Provides a description of the application, including the application
--   Amazon Resource Name (ARN), status, latest version, and input and
--   output configuration.
--   
--   <i>See:</i> <a>applicationDetail</a> smart constructor.
data ApplicationDetail

-- | Creates a value of <a>ApplicationDetail</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adApplicationDescription</a> - Description of the
--   application.</li>
--   <li><a>adOutputDescriptions</a> - Describes the application output
--   configuration. For more information, see <a>Configuring Application
--   Output</a> .</li>
--   <li><a>adCloudWatchLoggingOptionDescriptions</a> - 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 <a>Working with Amazon
--   CloudWatch Logs</a> .</li>
--   <li><a>adReferenceDataSourceDescriptions</a> - Describes reference
--   data sources configured for the application. For more information, see
--   <a>Configuring Application Input</a> .</li>
--   <li><a>adInputDescriptions</a> - Describes the application input
--   configuration. For more information, see <a>Configuring Application
--   Input</a> .</li>
--   <li><a>adApplicationCode</a> - Returns the application code that you
--   provided to perform data analysis on any of the in-application streams
--   in your application.</li>
--   <li><a>adCreateTimestamp</a> - Time stamp when the application version
--   was created.</li>
--   <li><a>adLastUpdateTimestamp</a> - Time stamp when the application was
--   last updated.</li>
--   <li><a>adApplicationName</a> - Name of the application.</li>
--   <li><a>adApplicationARN</a> - ARN of the application.</li>
--   <li><a>adApplicationStatus</a> - Status of the application.</li>
--   <li><a>adApplicationVersionId</a> - Provides the current application
--   version.</li>
--   </ul>
applicationDetail :: Text -> Text -> ApplicationStatus -> Natural -> ApplicationDetail

-- | Description of the application.
adApplicationDescription :: Lens' ApplicationDetail (Maybe Text)

-- | Describes the application output configuration. For more information,
--   see <a>Configuring Application Output</a> .
adOutputDescriptions :: Lens' ApplicationDetail [OutputDescription]

-- | 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 <a>Working
--   with Amazon CloudWatch Logs</a> .
adCloudWatchLoggingOptionDescriptions :: Lens' ApplicationDetail [CloudWatchLoggingOptionDescription]

-- | Describes reference data sources configured for the application. For
--   more information, see <a>Configuring Application Input</a> .
adReferenceDataSourceDescriptions :: Lens' ApplicationDetail [ReferenceDataSourceDescription]

-- | Describes the application input configuration. For more information,
--   see <a>Configuring Application Input</a> .
adInputDescriptions :: Lens' ApplicationDetail [InputDescription]

-- | 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)

-- | Time stamp when the application version was created.
adCreateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)

-- | Time stamp when the application was last updated.
adLastUpdateTimestamp :: Lens' ApplicationDetail (Maybe UTCTime)

-- | Name of the application.
adApplicationName :: Lens' ApplicationDetail Text

-- | ARN of the application.
adApplicationARN :: Lens' ApplicationDetail Text

-- | Status of the application.
adApplicationStatus :: Lens' ApplicationDetail ApplicationStatus

-- | Provides the current application version.
adApplicationVersionId :: Lens' ApplicationDetail Natural

-- | Provides application summary information, including the application
--   Amazon Resource Name (ARN), name, and status.
--   
--   <i>See:</i> <a>applicationSummary</a> smart constructor.
data ApplicationSummary

-- | Creates a value of <a>ApplicationSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asApplicationName</a> - Name of the application.</li>
--   <li><a>asApplicationARN</a> - ARN of the application.</li>
--   <li><a>asApplicationStatus</a> - Status of the application.</li>
--   </ul>
applicationSummary :: Text -> Text -> ApplicationStatus -> ApplicationSummary

-- | Name of the application.
asApplicationName :: Lens' ApplicationSummary Text

-- | ARN of the application.
asApplicationARN :: Lens' ApplicationSummary Text

-- | Status of the application.
asApplicationStatus :: Lens' ApplicationSummary ApplicationStatus

-- | Describes updates to apply to an existing Amazon Kinesis Analytics
--   application.
--   
--   <i>See:</i> <a>applicationUpdate</a> smart constructor.
data ApplicationUpdate

-- | Creates a value of <a>ApplicationUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auReferenceDataSourceUpdates</a> - Describes application
--   reference data source updates.</li>
--   <li><a>auInputUpdates</a> - Describes application input configuration
--   updates.</li>
--   <li><a>auCloudWatchLoggingOptionUpdates</a> - Describes application
--   CloudWatch logging option updates.</li>
--   <li><a>auOutputUpdates</a> - Describes application output
--   configuration updates.</li>
--   <li><a>auApplicationCodeUpdate</a> - Describes application code
--   updates.</li>
--   </ul>
applicationUpdate :: ApplicationUpdate

-- | Describes application reference data source updates.
auReferenceDataSourceUpdates :: Lens' ApplicationUpdate [ReferenceDataSourceUpdate]

-- | Describes application input configuration updates.
auInputUpdates :: Lens' ApplicationUpdate [InputUpdate]

-- | Describes application CloudWatch logging option updates.
auCloudWatchLoggingOptionUpdates :: Lens' ApplicationUpdate [CloudWatchLoggingOptionUpdate]

-- | Describes application output configuration updates.
auOutputUpdates :: Lens' ApplicationUpdate [OutputUpdate]

-- | Describes application code updates.
auApplicationCodeUpdate :: Lens' ApplicationUpdate (Maybe Text)

-- | 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 <i>'\n'</i> as the row delimiter
--   and a comma (",") as the column delimiter:
--   
--   <pre>
--   "name1", "address1"
--   </pre>
--   
--   <pre>
--   "name2, "address2"
--   </pre>
--   
--   <i>See:</i> <a>csvMappingParameters</a> smart constructor.
data CSVMappingParameters

-- | Creates a value of <a>CSVMappingParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmpRecordRowDelimiter</a> - Row delimiter. For example, in a
--   CSV format, <i>'\n'</i> is the typical row delimiter.</li>
--   <li><a>cmpRecordColumnDelimiter</a> - Column delimiter. For example,
--   in a CSV format, a comma (",") is the typical column delimiter.</li>
--   </ul>
csvMappingParameters :: Text -> Text -> CSVMappingParameters

-- | Row delimiter. For example, in a CSV format, <i>'\n'</i> is the
--   typical row delimiter.
cmpRecordRowDelimiter :: Lens' CSVMappingParameters Text

-- | Column delimiter. For example, in a CSV format, a comma (",") is the
--   typical column delimiter.
cmpRecordColumnDelimiter :: Lens' CSVMappingParameters Text

-- | Provides a description of CloudWatch logging options, including the
--   log stream Amazon Resource Name (ARN) and the role ARN.
--   
--   <i>See:</i> <a>cloudWatchLoggingOption</a> smart constructor.
data CloudWatchLoggingOption

-- | Creates a value of <a>CloudWatchLoggingOption</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwloLogStreamARN</a> - ARN of the CloudWatch log to receive
--   application messages.</li>
--   <li><a>cwloRoleARN</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
--   <tt>PutLogEvents</tt> policy action enabled.</li>
--   </ul>
cloudWatchLoggingOption :: Text -> Text -> CloudWatchLoggingOption

-- | ARN of the CloudWatch log to receive application messages.
cwloLogStreamARN :: Lens' CloudWatchLoggingOption 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 <tt>PutLogEvents</tt> policy action enabled.
cwloRoleARN :: Lens' CloudWatchLoggingOption Text

-- | Description of the CloudWatch logging option.
--   
--   <i>See:</i> <a>cloudWatchLoggingOptionDescription</a> smart
--   constructor.
data CloudWatchLoggingOptionDescription

-- | Creates a value of <a>CloudWatchLoggingOptionDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwlodCloudWatchLoggingOptionId</a> - ID of the CloudWatch
--   logging option description.</li>
--   <li><a>cwlodLogStreamARN</a> - ARN of the CloudWatch log to receive
--   application messages.</li>
--   <li><a>cwlodRoleARN</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 <tt>PutLogEvents</tt>
--   policy action enabled.</li>
--   </ul>
cloudWatchLoggingOptionDescription :: Text -> Text -> CloudWatchLoggingOptionDescription

-- | ID of the CloudWatch logging option description.
cwlodCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionDescription (Maybe Text)

-- | ARN of the CloudWatch log to receive application messages.
cwlodLogStreamARN :: Lens' CloudWatchLoggingOptionDescription 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 <tt>PutLogEvents</tt> policy action enabled.
cwlodRoleARN :: Lens' CloudWatchLoggingOptionDescription Text

-- | Describes CloudWatch logging option updates.
--   
--   <i>See:</i> <a>cloudWatchLoggingOptionUpdate</a> smart constructor.
data CloudWatchLoggingOptionUpdate

-- | Creates a value of <a>CloudWatchLoggingOptionUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwlouRoleARNUpdate</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 <tt>PutLogEvents</tt>
--   policy action enabled.</li>
--   <li><a>cwlouLogStreamARNUpdate</a> - ARN of the CloudWatch log to
--   receive application messages.</li>
--   <li><a>cwlouCloudWatchLoggingOptionId</a> - ID of the CloudWatch
--   logging option to update</li>
--   </ul>
cloudWatchLoggingOptionUpdate :: Text -> 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 <tt>PutLogEvents</tt> policy action enabled.
cwlouRoleARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)

-- | ARN of the CloudWatch log to receive application messages.
cwlouLogStreamARNUpdate :: Lens' CloudWatchLoggingOptionUpdate (Maybe Text)

-- | ID of the CloudWatch logging option to update
cwlouCloudWatchLoggingOptionId :: Lens' CloudWatchLoggingOptionUpdate Text

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
--   
--   <i>See:</i> <a>destinationSchema</a> smart constructor.
data DestinationSchema

-- | Creates a value of <a>DestinationSchema</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsRecordFormatType</a> - Specifies the format of the records on
--   the output stream.</li>
--   </ul>
destinationSchema :: DestinationSchema

-- | Specifies the format of the records on the output stream.
dsRecordFormatType :: Lens' DestinationSchema (Maybe RecordFormatType)

-- | 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 <a>Configuring
--   Application Input</a> .
--   
--   <i>See:</i> <a>input</a> smart constructor.
data Input

-- | Creates a value of <a>Input</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iInputParallelism</a> - Describes the number of in-application
--   streams to create. Data from your source is routed to these
--   in-application input streams. (see <a>Configuring Application
--   Input</a> .</li>
--   <li><a>iInputProcessingConfiguration</a> - The
--   <a>InputProcessingConfiguration</a> 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 <a>InputLambdaProcessor</a> .</li>
--   <li><a>iKinesisStreamsInput</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 <tt>KinesisStreamsInput</tt> or
--   <tt>KinesisFirehoseInput</tt> is required.</li>
--   <li><a>iKinesisFirehoseInput</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
--   <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt> is
--   required.</li>
--   <li><a>iNamePrefix</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 <tt>InputParallelism</tt> count you specified)
--   in-application streams with names "MyInApplicationStream_001,"
--   "MyInApplicationStream_002," and so on.</li>
--   <li><a>iInputSchema</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.</li>
--   </ul>
input :: Text -> SourceSchema -> Input

-- | Describes the number of in-application streams to create. Data from
--   your source is routed to these in-application input streams. (see
--   <a>Configuring Application Input</a> .
iInputParallelism :: Lens' Input (Maybe InputParallelism)

-- | The <a>InputProcessingConfiguration</a> 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 <a>InputLambdaProcessor</a> .
iInputProcessingConfiguration :: Lens' Input (Maybe InputProcessingConfiguration)

-- | 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 <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt>
--   is required.
iKinesisStreamsInput :: Lens' Input (Maybe KinesisStreamsInput)

-- | 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 <tt>KinesisStreamsInput</tt> or <tt>KinesisFirehoseInput</tt>
--   is required.
iKinesisFirehoseInput :: Lens' Input (Maybe KinesisFirehoseInput)

-- | 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
--   <tt>InputParallelism</tt> count you specified) in-application streams
--   with names "MyInApplicationStream_001," "MyInApplicationStream_002,"
--   and so on.
iNamePrefix :: Lens' Input 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.
iInputSchema :: Lens' Input SourceSchema

-- | 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.
--   
--   <i>See:</i> <a>inputConfiguration</a> smart constructor.
data InputConfiguration

-- | Creates a value of <a>InputConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>icId</a> - Input source ID. You can get this ID by calling the
--   <tt>DescribeApplication</tt> operation.</li>
--   <li><a>icInputStartingPositionConfiguration</a> - Point at which you
--   want the application to start processing records from the streaming
--   source.</li>
--   </ul>
inputConfiguration :: Text -> InputStartingPositionConfiguration -> InputConfiguration

-- | Input source ID. You can get this ID by calling the
--   <tt>DescribeApplication</tt> operation.
icId :: Lens' InputConfiguration Text

-- | Point at which you want the application to start processing records
--   from the streaming source.
icInputStartingPositionConfiguration :: Lens' InputConfiguration InputStartingPositionConfiguration

-- | Describes the application input configuration. For more information,
--   see <a>Configuring Application Input</a> .
--   
--   <i>See:</i> <a>inputDescription</a> smart constructor.
data InputDescription

-- | Creates a value of <a>InputDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idInputStartingPositionConfiguration</a> - Point at which the
--   application is configured to read from the input stream.</li>
--   <li><a>idInputParallelism</a> - Describes the configured parallelism
--   (number of in-application streams mapped to the streaming
--   source).</li>
--   <li><a>idInputId</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.</li>
--   <li><a>idInAppStreamNames</a> - Returns the in-application stream
--   names that are mapped to the stream source.</li>
--   <li><a>idKinesisFirehoseInputDescription</a> - 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.</li>
--   <li><a>idInputSchema</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.</li>
--   <li><a>idKinesisStreamsInputDescription</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.</li>
--   <li><a>idNamePrefix</a> - In-application name prefix.</li>
--   <li><a>idInputProcessingConfigurationDescription</a> - The description
--   of the preprocessor that executes on records in this input before the
--   application's code is run.</li>
--   </ul>
inputDescription :: InputDescription

-- | Point at which the application is configured to read from the input
--   stream.
idInputStartingPositionConfiguration :: Lens' InputDescription (Maybe InputStartingPositionConfiguration)

-- | Describes the configured parallelism (number of in-application streams
--   mapped to the streaming source).
idInputParallelism :: Lens' InputDescription (Maybe InputParallelism)

-- | 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)

-- | Returns the in-application stream names that are mapped to the stream
--   source.
idInAppStreamNames :: Lens' InputDescription [Text]

-- | 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)

-- | 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)

-- | 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)

-- | In-application name prefix.
idNamePrefix :: Lens' InputDescription (Maybe Text)

-- | The description of the preprocessor that executes on records in this
--   input before the application's code is run.
idInputProcessingConfigurationDescription :: Lens' InputDescription (Maybe InputProcessingConfigurationDescription)

-- | An object that contains the Amazon Resource Name (ARN) of the <a>AWS
--   Lambda</a> 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.
--   
--   <i>See:</i> <a>inputLambdaProcessor</a> smart constructor.
data InputLambdaProcessor

-- | Creates a value of <a>InputLambdaProcessor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpResourceARN</a> - The ARN of the <a>AWS Lambda</a> function
--   that operates on records in the stream.</li>
--   <li><a>ilpRoleARN</a> - The ARN of the IAM role that is used to access
--   the AWS Lambda function.</li>
--   </ul>
inputLambdaProcessor :: Text -> Text -> InputLambdaProcessor

-- | The ARN of the <a>AWS Lambda</a> function that operates on records in
--   the stream.
ilpResourceARN :: Lens' InputLambdaProcessor Text

-- | The ARN of the IAM role that is used to access the AWS Lambda
--   function.
ilpRoleARN :: Lens' InputLambdaProcessor Text

-- | An object that contains the Amazon Resource Name (ARN) of the <a>AWS
--   Lambda</a> 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.
--   
--   <i>See:</i> <a>inputLambdaProcessorDescription</a> smart constructor.
data InputLambdaProcessorDescription

-- | Creates a value of <a>InputLambdaProcessorDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpdResourceARN</a> - The ARN of the <a>AWS Lambda</a> function
--   that is used to preprocess the records in the stream.</li>
--   <li><a>ilpdRoleARN</a> - The ARN of the IAM role that is used to
--   access the AWS Lambda function.</li>
--   </ul>
inputLambdaProcessorDescription :: InputLambdaProcessorDescription

-- | The ARN of the <a>AWS Lambda</a> function that is used to preprocess
--   the records in the stream.
ilpdResourceARN :: Lens' InputLambdaProcessorDescription (Maybe Text)

-- | The ARN of the IAM role that is used to access the AWS Lambda
--   function.
ilpdRoleARN :: Lens' InputLambdaProcessorDescription (Maybe Text)

-- | Represents an update to the <a>InputLambdaProcessor</a> that is used
--   to preprocess the records in the stream.
--   
--   <i>See:</i> <a>inputLambdaProcessorUpdate</a> smart constructor.
data InputLambdaProcessorUpdate

-- | Creates a value of <a>InputLambdaProcessorUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilpuRoleARNUpdate</a> - The ARN of the new IAM role that is
--   used to access the AWS Lambda function.</li>
--   <li><a>ilpuResourceARNUpdate</a> - The Amazon Resource Name (ARN) of
--   the new <a>AWS Lambda</a> function that is used to preprocess the
--   records in the stream.</li>
--   </ul>
inputLambdaProcessorUpdate :: InputLambdaProcessorUpdate

-- | The ARN of the new IAM role that is used to access the AWS Lambda
--   function.
ilpuRoleARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)

-- | The Amazon Resource Name (ARN) of the new <a>AWS Lambda</a> function
--   that is used to preprocess the records in the stream.
ilpuResourceARNUpdate :: Lens' InputLambdaProcessorUpdate (Maybe Text)

-- | Describes the number of in-application streams to create for a given
--   streaming source. For information about parallelism, see
--   <a>Configuring Application Input</a> .
--   
--   <i>See:</i> <a>inputParallelism</a> smart constructor.
data InputParallelism

-- | Creates a value of <a>InputParallelism</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipCount</a> - Number of in-application streams to create. For
--   more information, see <a>Limits</a> .</li>
--   </ul>
inputParallelism :: InputParallelism

-- | Number of in-application streams to create. For more information, see
--   <a>Limits</a> .
ipCount :: Lens' InputParallelism (Maybe Natural)

-- | Provides updates to the parallelism count.
--   
--   <i>See:</i> <a>inputParallelismUpdate</a> smart constructor.
data InputParallelismUpdate

-- | Creates a value of <a>InputParallelismUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipuCountUpdate</a> - Number of in-application streams to create
--   for the specified streaming source.</li>
--   </ul>
inputParallelismUpdate :: InputParallelismUpdate

-- | Number of in-application streams to create for the specified streaming
--   source.
ipuCountUpdate :: Lens' InputParallelismUpdate (Maybe Natural)

-- | 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 <a>AWS Lambda</a> .
--   
--   <i>See:</i> <a>inputProcessingConfiguration</a> smart constructor.
data InputProcessingConfiguration

-- | Creates a value of <a>InputProcessingConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcInputLambdaProcessor</a> - The <a>InputLambdaProcessor</a>
--   that is used to preprocess the records in the stream before being
--   processed by your application code.</li>
--   </ul>
inputProcessingConfiguration :: InputLambdaProcessor -> InputProcessingConfiguration

-- | The <a>InputLambdaProcessor</a> that is used to preprocess the records
--   in the stream before being processed by your application code.
ipcInputLambdaProcessor :: Lens' InputProcessingConfiguration InputLambdaProcessor

-- | Provides configuration information about an input processor.
--   Currently, the only input processor available is <a>AWS Lambda</a> .
--   
--   <i>See:</i> <a>inputProcessingConfigurationDescription</a> smart
--   constructor.
data InputProcessingConfigurationDescription

-- | Creates a value of <a>InputProcessingConfigurationDescription</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcdInputLambdaProcessorDescription</a> - Provides
--   configuration information about the associated
--   <a>InputLambdaProcessorDescription</a> .</li>
--   </ul>
inputProcessingConfigurationDescription :: InputProcessingConfigurationDescription

-- | Provides configuration information about the associated
--   <a>InputLambdaProcessorDescription</a> .
ipcdInputLambdaProcessorDescription :: Lens' InputProcessingConfigurationDescription (Maybe InputLambdaProcessorDescription)

-- | Describes updates to an <a>InputProcessingConfiguration</a> .
--   
--   <i>See:</i> <a>inputProcessingConfigurationUpdate</a> smart
--   constructor.
data InputProcessingConfigurationUpdate

-- | Creates a value of <a>InputProcessingConfigurationUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipcuInputLambdaProcessorUpdate</a> - Provides update
--   information for an <a>InputLambdaProcessor</a> .</li>
--   </ul>
inputProcessingConfigurationUpdate :: InputLambdaProcessorUpdate -> InputProcessingConfigurationUpdate

-- | Provides update information for an <a>InputLambdaProcessor</a> .
ipcuInputLambdaProcessorUpdate :: Lens' InputProcessingConfigurationUpdate InputLambdaProcessorUpdate

-- | Describes updates for the application's input schema.
--   
--   <i>See:</i> <a>inputSchemaUpdate</a> smart constructor.
data InputSchemaUpdate

-- | Creates a value of <a>InputSchemaUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isuRecordFormatUpdate</a> - Specifies the format of the records
--   on the streaming source.</li>
--   <li><a>isuRecordEncodingUpdate</a> - Specifies the encoding of the
--   records in the streaming source. For example, UTF-8.</li>
--   <li><a>isuRecordColumnUpdates</a> - A list of <tt>RecordColumn</tt>
--   objects. Each object describes the mapping of the streaming source
--   element to the corresponding column in the in-application stream.</li>
--   </ul>
inputSchemaUpdate :: InputSchemaUpdate

-- | Specifies the format of the records on the streaming source.
isuRecordFormatUpdate :: Lens' InputSchemaUpdate (Maybe RecordFormat)

-- | Specifies the encoding of the records in the streaming source. For
--   example, UTF-8.
isuRecordEncodingUpdate :: Lens' InputSchemaUpdate (Maybe Text)

-- | A list of <tt>RecordColumn</tt> 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))

-- | Describes the point at which the application reads from the streaming
--   source.
--   
--   <i>See:</i> <a>inputStartingPositionConfiguration</a> smart
--   constructor.
data InputStartingPositionConfiguration

-- | Creates a value of <a>InputStartingPositionConfiguration</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ispcInputStartingPosition</a> - The starting position on the
--   stream. * <tt>NOW</tt> - Start reading just after the most recent
--   record in the stream, start at the request time stamp that the
--   customer issued. * <tt>TRIM_HORIZON</tt> - 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. * <tt>LAST_STOPPED_POINT</tt> - Resume
--   reading from where the application last stopped reading.</li>
--   </ul>
inputStartingPositionConfiguration :: InputStartingPositionConfiguration

-- | The starting position on the stream. * <tt>NOW</tt> - Start reading
--   just after the most recent record in the stream, start at the request
--   time stamp that the customer issued. * <tt>TRIM_HORIZON</tt> - 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. *
--   <tt>LAST_STOPPED_POINT</tt> - Resume reading from where the
--   application last stopped reading.
ispcInputStartingPosition :: Lens' InputStartingPositionConfiguration (Maybe InputStartingPosition)

-- | Describes updates to a specific input configuration (identified by the
--   <tt>InputId</tt> of an application).
--   
--   <i>See:</i> <a>inputUpdate</a> smart constructor.
data InputUpdate

-- | Creates a value of <a>InputUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iuInputProcessingConfigurationUpdate</a> - Describes updates
--   for an input processing configuration.</li>
--   <li><a>iuKinesisStreamsInputUpdate</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.</li>
--   <li><a>iuInputParallelismUpdate</a> - Describes the parallelism
--   updates (the number in-application streams Amazon Kinesis Analytics
--   creates for the specific streaming source).</li>
--   <li><a>iuNamePrefixUpdate</a> - Name prefix for in-application streams
--   that Amazon Kinesis Analytics creates for the specific streaming
--   source.</li>
--   <li><a>iuInputSchemaUpdate</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.</li>
--   <li><a>iuKinesisFirehoseInputUpdate</a> - If an Amazon Kinesis
--   Firehose delivery stream is the streaming source to be updated,
--   provides an updated stream ARN and IAM role ARN.</li>
--   <li><a>iuInputId</a> - Input ID of the application input to be
--   updated.</li>
--   </ul>
inputUpdate :: Text -> InputUpdate

-- | Describes updates for an input processing configuration.
iuInputProcessingConfigurationUpdate :: Lens' InputUpdate (Maybe InputProcessingConfigurationUpdate)

-- | 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)

-- | Describes the parallelism updates (the number in-application streams
--   Amazon Kinesis Analytics creates for the specific streaming source).
iuInputParallelismUpdate :: Lens' InputUpdate (Maybe InputParallelismUpdate)

-- | Name prefix for in-application streams that Amazon Kinesis Analytics
--   creates for the specific streaming source.
iuNamePrefixUpdate :: Lens' InputUpdate (Maybe Text)

-- | 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)

-- | 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)

-- | Input ID of the application input to be updated.
iuInputId :: Lens' InputUpdate Text

-- | Provides additional mapping information when JSON is the record format
--   on the streaming source.
--   
--   <i>See:</i> <a>jsonMappingParameters</a> smart constructor.
data JSONMappingParameters

-- | Creates a value of <a>JSONMappingParameters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jmpRecordRowPath</a> - Path to the top-level parent that
--   contains the records.</li>
--   </ul>
jsonMappingParameters :: Text -> JSONMappingParameters

-- | Path to the top-level parent that contains the records.
jmpRecordRowPath :: Lens' JSONMappingParameters Text

-- | 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.
--   
--   <i>See:</i> <a>kinesisFirehoseInput</a> smart constructor.
data KinesisFirehoseInput

-- | Creates a value of <a>KinesisFirehoseInput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfiResourceARN</a> - ARN of the input delivery stream.</li>
--   <li><a>kfiRoleARN</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.</li>
--   </ul>
kinesisFirehoseInput :: Text -> Text -> KinesisFirehoseInput

-- | ARN of the input delivery stream.
kfiResourceARN :: Lens' KinesisFirehoseInput Text

-- | 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

-- | Describes the Amazon Kinesis Firehose delivery stream that is
--   configured as the streaming source in the application input
--   configuration.
--   
--   <i>See:</i> <a>kinesisFirehoseInputDescription</a> smart constructor.
data KinesisFirehoseInputDescription

-- | Creates a value of <a>KinesisFirehoseInputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfidResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis Firehose delivery stream.</li>
--   <li><a>kfidRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics assumes to access the stream.</li>
--   </ul>
kinesisFirehoseInputDescription :: KinesisFirehoseInputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream.
kfidResourceARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics assumes to access
--   the stream.
kfidRoleARN :: Lens' KinesisFirehoseInputDescription (Maybe Text)

-- | When updating application input configuration, provides information
--   about an Amazon Kinesis Firehose delivery stream as the streaming
--   source.
--   
--   <i>See:</i> <a>kinesisFirehoseInputUpdate</a> smart constructor.
data KinesisFirehoseInputUpdate

-- | Creates a value of <a>KinesisFirehoseInputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfiuRoleARNUpdate</a> - 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.</li>
--   <li><a>kfiuResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   input Amazon Kinesis Firehose delivery stream to read.</li>
--   </ul>
kinesisFirehoseInputUpdate :: KinesisFirehoseInputUpdate

-- | 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)

-- | Amazon Resource Name (ARN) of the input Amazon Kinesis Firehose
--   delivery stream to read.
kfiuResourceARNUpdate :: Lens' KinesisFirehoseInputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisFirehoseOutput</a> smart constructor.
data KinesisFirehoseOutput

-- | Creates a value of <a>KinesisFirehoseOutput</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfoResourceARN</a> - ARN of the destination Amazon Kinesis
--   Firehose delivery stream to write to.</li>
--   <li><a>kfoRoleARN</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.</li>
--   </ul>
kinesisFirehoseOutput :: Text -> Text -> KinesisFirehoseOutput

-- | ARN of the destination Amazon Kinesis Firehose delivery stream to
--   write to.
kfoResourceARN :: Lens' KinesisFirehoseOutput 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.
kfoRoleARN :: Lens' KinesisFirehoseOutput Text

-- | For an application output, describes the Amazon Kinesis Firehose
--   delivery stream configured as its destination.
--   
--   <i>See:</i> <a>kinesisFirehoseOutputDescription</a> smart constructor.
data KinesisFirehoseOutputDescription

-- | Creates a value of <a>KinesisFirehoseOutputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfodResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis Firehose delivery stream.</li>
--   <li><a>kfodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisFirehoseOutputDescription :: KinesisFirehoseOutputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream.
kfodResourceARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
kfodRoleARN :: Lens' KinesisFirehoseOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   Amazon Kinesis Firehose delivery stream configured as the destination.
--   
--   <i>See:</i> <a>kinesisFirehoseOutputUpdate</a> smart constructor.
data KinesisFirehoseOutputUpdate

-- | Creates a value of <a>KinesisFirehoseOutputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kfouRoleARNUpdate</a> - 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.</li>
--   <li><a>kfouResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   Amazon Kinesis Firehose delivery stream to write to.</li>
--   </ul>
kinesisFirehoseOutputUpdate :: KinesisFirehoseOutputUpdate

-- | 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)

-- | Amazon Resource Name (ARN) of the Amazon Kinesis Firehose delivery
--   stream to write to.
kfouResourceARNUpdate :: Lens' KinesisFirehoseOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisStreamsInput</a> smart constructor.
data KinesisStreamsInput

-- | Creates a value of <a>KinesisStreamsInput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksiResourceARN</a> - ARN of the input Amazon Kinesis stream to
--   read.</li>
--   <li><a>ksiRoleARN</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.</li>
--   </ul>
kinesisStreamsInput :: Text -> Text -> KinesisStreamsInput

-- | ARN of the input Amazon Kinesis stream to read.
ksiResourceARN :: Lens' KinesisStreamsInput 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.
ksiRoleARN :: Lens' KinesisStreamsInput Text

-- | Describes the Amazon Kinesis stream that is configured as the
--   streaming source in the application input configuration.
--   
--   <i>See:</i> <a>kinesisStreamsInputDescription</a> smart constructor.
data KinesisStreamsInputDescription

-- | Creates a value of <a>KinesisStreamsInputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksidResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis stream.</li>
--   <li><a>ksidRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisStreamsInputDescription :: KinesisStreamsInputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
ksidResourceARN :: Lens' KinesisStreamsInputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
ksidRoleARN :: Lens' KinesisStreamsInputDescription (Maybe Text)

-- | When updating application input configuration, provides information
--   about an Amazon Kinesis stream as the streaming source.
--   
--   <i>See:</i> <a>kinesisStreamsInputUpdate</a> smart constructor.
data KinesisStreamsInputUpdate

-- | Creates a value of <a>KinesisStreamsInputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksiuRoleARNUpdate</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.</li>
--   <li><a>ksiuResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   input Amazon Kinesis stream to read.</li>
--   </ul>
kinesisStreamsInputUpdate :: 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.
ksiuRoleARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the input Amazon Kinesis stream to read.
ksiuResourceARNUpdate :: Lens' KinesisStreamsInputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>kinesisStreamsOutput</a> smart constructor.
data KinesisStreamsOutput

-- | Creates a value of <a>KinesisStreamsOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksoResourceARN</a> - ARN of the destination Amazon Kinesis
--   stream to write to.</li>
--   <li><a>ksoRoleARN</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.</li>
--   </ul>
kinesisStreamsOutput :: Text -> Text -> KinesisStreamsOutput

-- | ARN of the destination Amazon Kinesis stream to write to.
ksoResourceARN :: Lens' KinesisStreamsOutput 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.
ksoRoleARN :: Lens' KinesisStreamsOutput Text

-- | For an application output, describes the Amazon Kinesis stream
--   configured as its destination.
--   
--   <i>See:</i> <a>kinesisStreamsOutputDescription</a> smart constructor.
data KinesisStreamsOutputDescription

-- | Creates a value of <a>KinesisStreamsOutputDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksodResourceARN</a> - Amazon Resource Name (ARN) of the Amazon
--   Kinesis stream.</li>
--   <li><a>ksodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to access the stream.</li>
--   </ul>
kinesisStreamsOutputDescription :: KinesisStreamsOutputDescription

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream.
ksodResourceARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to access
--   the stream.
ksodRoleARN :: Lens' KinesisStreamsOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   Amazon Kinesis stream configured as the destination.
--   
--   <i>See:</i> <a>kinesisStreamsOutputUpdate</a> smart constructor.
data KinesisStreamsOutputUpdate

-- | Creates a value of <a>KinesisStreamsOutputUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ksouRoleARNUpdate</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.</li>
--   <li><a>ksouResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   Amazon Kinesis stream where you want to write the output.</li>
--   </ul>
kinesisStreamsOutputUpdate :: 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.
ksouRoleARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the Amazon Kinesis stream where you want
--   to write the output.
ksouResourceARNUpdate :: Lens' KinesisStreamsOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>lambdaOutput</a> smart constructor.
data LambdaOutput

-- | Creates a value of <a>LambdaOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>loResourceARN</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function to write to.</li>
--   <li><a>loRoleARN</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.</li>
--   </ul>
lambdaOutput :: Text -> Text -> LambdaOutput

-- | Amazon Resource Name (ARN) of the destination Lambda function to write
--   to.
loResourceARN :: Lens' LambdaOutput 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.
loRoleARN :: Lens' LambdaOutput Text

-- | For an application output, describes the AWS Lambda function
--   configured as its destination.
--   
--   <i>See:</i> <a>lambdaOutputDescription</a> smart constructor.
data LambdaOutputDescription

-- | Creates a value of <a>LambdaOutputDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lodResourceARN</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function.</li>
--   <li><a>lodRoleARN</a> - ARN of the IAM role that Amazon Kinesis
--   Analytics can assume to write to the destination function.</li>
--   </ul>
lambdaOutputDescription :: LambdaOutputDescription

-- | Amazon Resource Name (ARN) of the destination Lambda function.
lodResourceARN :: Lens' LambdaOutputDescription (Maybe Text)

-- | ARN of the IAM role that Amazon Kinesis Analytics can assume to write
--   to the destination function.
lodRoleARN :: Lens' LambdaOutputDescription (Maybe Text)

-- | When updating an output configuration using the
--   <tt>UpdateApplication</tt> operation, provides information about an
--   AWS Lambda function configured as the destination.
--   
--   <i>See:</i> <a>lambdaOutputUpdate</a> smart constructor.
data LambdaOutputUpdate

-- | Creates a value of <a>LambdaOutputUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>louRoleARNUpdate</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.</li>
--   <li><a>louResourceARNUpdate</a> - Amazon Resource Name (ARN) of the
--   destination Lambda function.</li>
--   </ul>
lambdaOutputUpdate :: 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.
louRoleARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)

-- | Amazon Resource Name (ARN) of the destination Lambda function.
louResourceARNUpdate :: Lens' LambdaOutputUpdate (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>mappingParameters</a> smart constructor.
data MappingParameters

-- | Creates a value of <a>MappingParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mpCSVMappingParameters</a> - Provides additional mapping
--   information when the record format uses delimiters (for example,
--   CSV).</li>
--   <li><a>mpJSONMappingParameters</a> - Provides additional mapping
--   information when JSON is the record format on the streaming
--   source.</li>
--   </ul>
mappingParameters :: MappingParameters

-- | Provides additional mapping information when the record format uses
--   delimiters (for example, CSV).
mpCSVMappingParameters :: Lens' MappingParameters (Maybe CSVMappingParameters)

-- | Provides additional mapping information when JSON is the record format
--   on the streaming source.
mpJSONMappingParameters :: Lens' MappingParameters (Maybe JSONMappingParameters)

-- | 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 <a>Limits</a> .
--   
--   <i>See:</i> <a>output</a> smart constructor.
data Output

-- | Creates a value of <a>Output</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oLambdaOutput</a> - Identifies an AWS Lambda function as the
--   destination.</li>
--   <li><a>oKinesisStreamsOutput</a> - Identifies an Amazon Kinesis stream
--   as the destination.</li>
--   <li><a>oKinesisFirehoseOutput</a> - Identifies an Amazon Kinesis
--   Firehose delivery stream as the destination.</li>
--   <li><a>oName</a> - Name of the in-application stream.</li>
--   <li><a>oDestinationSchema</a> - Describes the data format when records
--   are written to the destination. For more information, see
--   <a>Configuring Application Output</a> .</li>
--   </ul>
output :: Text -> DestinationSchema -> Output

-- | Identifies an AWS Lambda function as the destination.
oLambdaOutput :: Lens' Output (Maybe LambdaOutput)

-- | Identifies an Amazon Kinesis stream as the destination.
oKinesisStreamsOutput :: Lens' Output (Maybe KinesisStreamsOutput)

-- | Identifies an Amazon Kinesis Firehose delivery stream as the
--   destination.
oKinesisFirehoseOutput :: Lens' Output (Maybe KinesisFirehoseOutput)

-- | Name of the in-application stream.
oName :: Lens' Output Text

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
oDestinationSchema :: Lens' Output DestinationSchema

-- | 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.
--   
--   <i>See:</i> <a>outputDescription</a> smart constructor.
data OutputDescription

-- | Creates a value of <a>OutputDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>odOutputId</a> - A unique identifier for the output
--   configuration.</li>
--   <li><a>odDestinationSchema</a> - Data format used for writing data to
--   the destination.</li>
--   <li><a>odKinesisFirehoseOutputDescription</a> - Describes the Amazon
--   Kinesis Firehose delivery stream configured as the destination where
--   output is written.</li>
--   <li><a>odKinesisStreamsOutputDescription</a> - Describes Amazon
--   Kinesis stream configured as the destination where output is
--   written.</li>
--   <li><a>odName</a> - Name of the in-application stream configured as
--   output.</li>
--   <li><a>odLambdaOutputDescription</a> - Describes the AWS Lambda
--   function configured as the destination where output is written.</li>
--   </ul>
outputDescription :: OutputDescription

-- | A unique identifier for the output configuration.
odOutputId :: Lens' OutputDescription (Maybe Text)

-- | Data format used for writing data to the destination.
odDestinationSchema :: Lens' OutputDescription (Maybe DestinationSchema)

-- | Describes the Amazon Kinesis Firehose delivery stream configured as
--   the destination where output is written.
odKinesisFirehoseOutputDescription :: Lens' OutputDescription (Maybe KinesisFirehoseOutputDescription)

-- | Describes Amazon Kinesis stream configured as the destination where
--   output is written.
odKinesisStreamsOutputDescription :: Lens' OutputDescription (Maybe KinesisStreamsOutputDescription)

-- | Name of the in-application stream configured as output.
odName :: Lens' OutputDescription (Maybe Text)

-- | Describes the AWS Lambda function configured as the destination where
--   output is written.
odLambdaOutputDescription :: Lens' OutputDescription (Maybe LambdaOutputDescription)

-- | Describes updates to the output configuration identified by the
--   <tt>OutputId</tt> .
--   
--   <i>See:</i> <a>outputUpdate</a> smart constructor.
data OutputUpdate

-- | Creates a value of <a>OutputUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouKinesisStreamsOutputUpdate</a> - Describes an Amazon Kinesis
--   stream as the destination for the output.</li>
--   <li><a>ouDestinationSchemaUpdate</a> - Describes the data format when
--   records are written to the destination. For more information, see
--   <a>Configuring Application Output</a> .</li>
--   <li><a>ouKinesisFirehoseOutputUpdate</a> - Describes an Amazon Kinesis
--   Firehose delivery stream as the destination for the output.</li>
--   <li><a>ouNameUpdate</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.</li>
--   <li><a>ouLambdaOutputUpdate</a> - Describes an AWS Lambda function as
--   the destination for the output.</li>
--   <li><a>ouOutputId</a> - Identifies the specific output configuration
--   that you want to update.</li>
--   </ul>
outputUpdate :: Text -> OutputUpdate

-- | Describes an Amazon Kinesis stream as the destination for the output.
ouKinesisStreamsOutputUpdate :: Lens' OutputUpdate (Maybe KinesisStreamsOutputUpdate)

-- | Describes the data format when records are written to the destination.
--   For more information, see <a>Configuring Application Output</a> .
ouDestinationSchemaUpdate :: Lens' OutputUpdate (Maybe DestinationSchema)

-- | Describes an Amazon Kinesis Firehose delivery stream as the
--   destination for the output.
ouKinesisFirehoseOutputUpdate :: Lens' OutputUpdate (Maybe KinesisFirehoseOutputUpdate)

-- | 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)

-- | Describes an AWS Lambda function as the destination for the output.
ouLambdaOutputUpdate :: Lens' OutputUpdate (Maybe LambdaOutputUpdate)

-- | Identifies the specific output configuration that you want to update.
ouOutputId :: Lens' OutputUpdate Text

-- | 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.
--   
--   <i>See:</i> <a>recordColumn</a> smart constructor.
data RecordColumn

-- | Creates a value of <a>RecordColumn</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcMapping</a> - Reference to the data element in the streaming
--   input of the reference data source.</li>
--   <li><a>rcName</a> - Name of the column created in the in-application
--   input stream or reference table.</li>
--   <li><a>rcSqlType</a> - Type of column created in the in-application
--   input stream or reference table.</li>
--   </ul>
recordColumn :: Text -> Text -> RecordColumn

-- | Reference to the data element in the streaming input of the reference
--   data source.
rcMapping :: Lens' RecordColumn (Maybe Text)

-- | Name of the column created in the in-application input stream or
--   reference table.
rcName :: Lens' RecordColumn Text

-- | Type of column created in the in-application input stream or reference
--   table.
rcSqlType :: Lens' RecordColumn Text

-- | Describes the record format and relevant mapping information that
--   should be applied to schematize the records on the stream.
--   
--   <i>See:</i> <a>recordFormat</a> smart constructor.
data RecordFormat

-- | Creates a value of <a>RecordFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rfMappingParameters</a> - 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.</li>
--   <li><a>rfRecordFormatType</a> - The type of record format.</li>
--   </ul>
recordFormat :: RecordFormatType -> 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.
rfMappingParameters :: Lens' RecordFormat (Maybe MappingParameters)

-- | The type of record format.
rfRecordFormatType :: Lens' RecordFormat RecordFormatType

-- | 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.
--   
--   <i>See:</i> <a>referenceDataSource</a> smart constructor.
data ReferenceDataSource

-- | Creates a value of <a>ReferenceDataSource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsS3ReferenceDataSource</a> - 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
--   <tt>UpdateApplication</tt> operation to trigger reloading of data into
--   your application.</li>
--   <li><a>rdsTableName</a> - Name of the in-application table to
--   create.</li>
--   <li><a>rdsReferenceSchema</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.</li>
--   </ul>
referenceDataSource :: Text -> SourceSchema -> 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 <tt>UpdateApplication</tt> operation to trigger reloading of
--   data into your application.
rdsS3ReferenceDataSource :: Lens' ReferenceDataSource (Maybe S3ReferenceDataSource)

-- | Name of the in-application table to create.
rdsTableName :: Lens' ReferenceDataSource 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.
rdsReferenceSchema :: Lens' ReferenceDataSource SourceSchema

-- | Describes the reference data source configured for an application.
--   
--   <i>See:</i> <a>referenceDataSourceDescription</a> smart constructor.
data ReferenceDataSourceDescription

-- | Creates a value of <a>ReferenceDataSourceDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsdReferenceSchema</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.</li>
--   <li><a>rdsdReferenceId</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
--   <tt>AddApplicationReferenceDataSource</tt> operation.</li>
--   <li><a>rdsdTableName</a> - The in-application table name created by
--   the specific reference data source configuration.</li>
--   <li><a>rdsdS3ReferenceDataSourceDescription</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.</li>
--   </ul>
referenceDataSourceDescription :: Text -> Text -> S3ReferenceDataSourceDescription -> 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.
rdsdReferenceSchema :: Lens' ReferenceDataSourceDescription (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 <tt>AddApplicationReferenceDataSource</tt>
--   operation.
rdsdReferenceId :: Lens' ReferenceDataSourceDescription Text

-- | The in-application table name created by the specific reference data
--   source configuration.
rdsdTableName :: Lens' ReferenceDataSourceDescription 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.
rdsdS3ReferenceDataSourceDescription :: Lens' ReferenceDataSourceDescription S3ReferenceDataSourceDescription

-- | 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.
--   
--   <i>See:</i> <a>referenceDataSourceUpdate</a> smart constructor.
data ReferenceDataSourceUpdate

-- | Creates a value of <a>ReferenceDataSourceUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsuTableNameUpdate</a> - In-application table name that is
--   created by this update.</li>
--   <li><a>rdsuS3ReferenceDataSourceUpdate</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.</li>
--   <li><a>rdsuReferenceSchemaUpdate</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.</li>
--   <li><a>rdsuReferenceId</a> - ID of the reference data source being
--   updated. You can use the <tt>DescribeApplication</tt> operation to get
--   this value.</li>
--   </ul>
referenceDataSourceUpdate :: Text -> ReferenceDataSourceUpdate

-- | In-application table name that is created by this update.
rdsuTableNameUpdate :: Lens' ReferenceDataSourceUpdate (Maybe Text)

-- | 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)

-- | 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)

-- | ID of the reference data source being updated. You can use the
--   <tt>DescribeApplication</tt> operation to get this value.
rdsuReferenceId :: Lens' ReferenceDataSourceUpdate Text

-- | 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.
--   
--   <i>See:</i> <a>s3Configuration</a> smart constructor.
data S3Configuration

-- | Creates a value of <a>S3Configuration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scRoleARN</a> - IAM ARN of the role used to access the
--   data.</li>
--   <li><a>scBucketARN</a> - ARN of the S3 bucket that contains the
--   data.</li>
--   <li><a>scFileKey</a> - The name of the object that contains the
--   data.</li>
--   </ul>
s3Configuration :: Text -> Text -> Text -> S3Configuration

-- | IAM ARN of the role used to access the data.
scRoleARN :: Lens' S3Configuration Text

-- | ARN of the S3 bucket that contains the data.
scBucketARN :: Lens' S3Configuration Text

-- | The name of the object that contains the data.
scFileKey :: Lens' S3Configuration Text

-- | 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 <tt>UpdateApplication</tt>
--   operation to trigger reloading of data into your application.
--   
--   <i>See:</i> <a>s3ReferenceDataSource</a> smart constructor.
data S3ReferenceDataSource

-- | Creates a value of <a>S3ReferenceDataSource</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsBucketARN</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsFileKey</a> - Object key name containing reference
--   data.</li>
--   <li><a>srdsReferenceRoleARN</a> - ARN of the IAM role that the service
--   can assume to read data on your behalf. This role must have permission
--   for the <tt>s3:GetObject</tt> action on the object and trust policy
--   that allows Amazon Kinesis Analytics service principal to assume this
--   role.</li>
--   </ul>
s3ReferenceDataSource :: Text -> Text -> Text -> S3ReferenceDataSource

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsBucketARN :: Lens' S3ReferenceDataSource Text

-- | Object key name containing reference data.
srdsFileKey :: Lens' S3ReferenceDataSource Text

-- | ARN of the IAM role that the service can assume to read data on your
--   behalf. This role must have permission for the <tt>s3:GetObject</tt>
--   action on the object and trust policy that allows Amazon Kinesis
--   Analytics service principal to assume this role.
srdsReferenceRoleARN :: Lens' S3ReferenceDataSource Text

-- | Provides the bucket name and object key name that stores the reference
--   data.
--   
--   <i>See:</i> <a>s3ReferenceDataSourceDescription</a> smart constructor.
data S3ReferenceDataSourceDescription

-- | Creates a value of <a>S3ReferenceDataSourceDescription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsdBucketARN</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsdFileKey</a> - Amazon S3 object key name.</li>
--   <li><a>srdsdReferenceRoleARN</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.</li>
--   </ul>
s3ReferenceDataSourceDescription :: Text -> Text -> Text -> S3ReferenceDataSourceDescription

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsdBucketARN :: Lens' S3ReferenceDataSourceDescription Text

-- | Amazon S3 object key name.
srdsdFileKey :: Lens' S3ReferenceDataSourceDescription 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.
srdsdReferenceRoleARN :: Lens' S3ReferenceDataSourceDescription Text

-- | 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.
--   
--   <i>See:</i> <a>s3ReferenceDataSourceUpdate</a> smart constructor.
data S3ReferenceDataSourceUpdate

-- | Creates a value of <a>S3ReferenceDataSourceUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srdsuBucketARNUpdate</a> - Amazon Resource Name (ARN) of the S3
--   bucket.</li>
--   <li><a>srdsuFileKeyUpdate</a> - Object key name.</li>
--   <li><a>srdsuReferenceRoleARNUpdate</a> - ARN of the IAM role that
--   Amazon Kinesis Analytics can assume to read the Amazon S3 object and
--   populate the in-application.</li>
--   </ul>
s3ReferenceDataSourceUpdate :: S3ReferenceDataSourceUpdate

-- | Amazon Resource Name (ARN) of the S3 bucket.
srdsuBucketARNUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)

-- | Object key name.
srdsuFileKeyUpdate :: Lens' S3ReferenceDataSourceUpdate (Maybe Text)

-- | 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)

-- | 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.
--   
--   <i>See:</i> <a>sourceSchema</a> smart constructor.
data SourceSchema

-- | Creates a value of <a>SourceSchema</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssRecordEncoding</a> - Specifies the encoding of the records in
--   the streaming source. For example, UTF-8.</li>
--   <li><a>ssRecordFormat</a> - Specifies the format of the records on the
--   streaming source.</li>
--   <li><a>ssRecordColumns</a> - A list of <tt>RecordColumn</tt>
--   objects.</li>
--   </ul>
sourceSchema :: RecordFormat -> NonEmpty RecordColumn -> SourceSchema

-- | Specifies the encoding of the records in the streaming source. For
--   example, UTF-8.
ssRecordEncoding :: Lens' SourceSchema (Maybe Text)

-- | Specifies the format of the records on the streaming source.
ssRecordFormat :: Lens' SourceSchema RecordFormat

-- | A list of <tt>RecordColumn</tt> objects.
ssRecordColumns :: Lens' SourceSchema (NonEmpty RecordColumn)
