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


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 Kinesis Streams ProvisionedThroughputExceededException.
_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

-- | Data format is not valid, 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>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> - Timestamp when the application version
--   was created.</li>
--   <li><a>adLastUpdateTimestamp</a> - Timestamp 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 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)

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

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

-- | 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 will be routed to these
--   in-application input streams. (see <a>Configuring Application
--   Input</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.</li>
--   <li><a>iKinesisFirehoseInput</a> - If the streaming source is an
--   Amazon Kinesis Firehose delivery stream, identifies the Firehose
--   delivery stream's ARN and an IAM role that enables Amazon Kinesis
--   Analytics to access the stream on your behalf.</li>
--   <li><a>iNamePrefix</a> - Name prefix to use when creating
--   in-application stream. Suppose you specify a prefix
--   <a>MyInApplicationStream</a>. Kinesis Analytics will then create one
--   or more (as per the <tt>InputParallelism</tt> count you specified)
--   in-application streams with names <a>MyInApplicationStream_001</a>,
--   <a>MyInApplicationStream_002</a> 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 will be routed to these in-application input streams. (see
--   <a>Configuring Application Input</a> .
iInputParallelism :: Lens' Input (Maybe InputParallelism)

-- | 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.
iKinesisStreamsInput :: Lens' Input (Maybe KinesisStreamsInput)

-- | If the streaming source is an Amazon Kinesis Firehose delivery stream,
--   identifies the Firehose delivery stream's ARN and an IAM role that
--   enables Amazon Kinesis Analytics to access the stream on your behalf.
iKinesisFirehoseInput :: Lens' Input (Maybe KinesisFirehoseInput)

-- | Name prefix to use when creating in-application stream. Suppose you
--   specify a prefix <a>MyInApplicationStream</a>. Kinesis Analytics will
--   then create one or more (as per the <tt>InputParallelism</tt> count
--   you specified) in-application streams with names
--   <a>MyInApplicationStream_001</a>, <a>MyInApplicationStream_002</a> 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 Firehose delivery 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>idInputSchema</a> - Undocumented member.</li>
--   <li><a>idKinesisStreamsInputDescription</a> - If an Amazon Kinesis
--   stream is configured as streaming source, provides Amazon Kinesis
--   stream's 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>
--   </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 Firehose delivery stream's Amazon
--   Resource Name (ARN) and an IAM role that enables Amazon Kinesis
--   Analytics to access the stream on your behalf.
idKinesisFirehoseInputDescription :: Lens' InputDescription (Maybe KinesisFirehoseInputDescription)

-- | Undocumented member.
idInputSchema :: Lens' InputDescription (Maybe SourceSchema)

-- | If an Amazon Kinesis stream is configured as streaming source,
--   provides Amazon Kinesis stream's 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)

-- | Describes the number of in-application streams to create for a given
--   streaming source. For information about parallellism, 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)

-- | 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>LATEST</tt> - Start reading just after the most recent
--   record in the stream. * <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>LATEST</tt> - Start reading
--   just after the most recent record in the stream. *
--   <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>iuKinesisStreamsInputUpdate</a> - If a Amazon Kinesis stream is
--   the streaming source to be updated, provides an updated stream ARN and
--   IAM role ARN.</li>
--   <li><a>iuInputParallelismUpdate</a> - Describes the parallelism
--   updates (the number in-application streams Kinesis Analytics creates
--   for the specific streaming source).</li>
--   <li><a>iuNamePrefixUpdate</a> - Name prefix for in-application
--   stream(s) that 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 Amazon Resource Name (ARN) and IAM role
--   ARN.</li>
--   <li><a>iuInputId</a> - Input ID of the application input to be
--   updated.</li>
--   </ul>
inputUpdate :: Text -> InputUpdate

-- | If a Amazon Kinesis stream is the streaming source to be updated,
--   provides an updated stream ARN and IAM role ARN.
iuKinesisStreamsInputUpdate :: Lens' InputUpdate (Maybe KinesisStreamsInputUpdate)

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

-- | Name prefix for in-application stream(s) that 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 Amazon Resource Name (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. For example, consider the following JSON record:
--   In the <tt>RecordRowPath</tt> , <tt>"$"</tt> refers to the root and
--   path <tt>"$.vehicle.Model"</tt> refers to the specific
--   <tt><a>Model</a></tt> key in the JSON.</li>
--   </ul>
jsonMappingParameters :: Text -> JSONMappingParameters

-- | Path to the top-level parent that contains the records. For example,
--   consider the following JSON record: In the <tt>RecordRowPath</tt> ,
--   <tt>"$"</tt> refers to the root and path <tt>"$.vehicle.Model"</tt>
--   refers to the specific <tt><a>Model</a></tt> key in the JSON.
jmpRecordRowPath :: Lens' JSONMappingParameters Text

-- | Identifies an Amazon Kinesis Firehose delivery stream as the streaming
--   source. You provide the Firehose 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 Firehose 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 Firehose 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> - Amazon Resource Name (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> - ARN of the input Amazon Kinesis
--   Firehose delivery stream to read.</li>
--   </ul>
kinesisFirehoseInputUpdate :: KinesisFirehoseInputUpdate

-- | Amazon Resource Name (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)

-- | 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 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 a 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 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.
--   
--   You can configure your application to write output to up to five
--   destinations.
--   
--   <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>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> - Undocumented member.</li>
--   </ul>
output :: Text -> DestinationSchema -> Output

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

-- | Undocumented member.
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>
--   </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 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> - Undocumented member.</li>
--   <li><a>ouKinesisFirehoseOutputUpdate</a> - Describes a 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>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)

-- | Undocumented member.
ouDestinationSchemaUpdate :: Lens' OutputUpdate (Maybe DestinationSchema)

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

-- | 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> - Undocumented member.</li>
--   <li><a>rfRecordFormatType</a> - The type of record format.</li>
--   </ul>
recordFormat :: RecordFormatType -> RecordFormat

-- | Undocumented member.
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> - Undocumented member.</li>
--   <li><a>rdsTableName</a> - Name of the in-application table to
--   create.</li>
--   <li><a>rdsReferenceSchema</a> - Undocumented member.</li>
--   </ul>
referenceDataSource :: Text -> SourceSchema -> ReferenceDataSource

-- | Undocumented member.
rdsS3ReferenceDataSource :: Lens' ReferenceDataSource (Maybe S3ReferenceDataSource)

-- | Name of the in-application table to create.
rdsTableName :: Lens' ReferenceDataSource Text

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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)

-- | Undocumented member.
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

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


-- | Updates an existing Kinesis Analytics application. Using this API, you
--   can update application code, input configuration, and output
--   configuration.
--   
--   Note that Kinesis Analytics updates the
--   <tt>CurrentApplicationVersionId</tt> each time you update your
--   application.
--   
--   This opeation 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 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 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.UpdateApplication.UpdateApplicationResponse


module Network.AWS.KinesisAnalytics.Waiters


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StopApplication.StopApplicationResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.StartApplication.StartApplicationResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.ListApplications.ListApplicationsResponse


-- | Infers a schema by evaluating sample records on the specified
--   streaming source (Amazon Kinesis stream or Amazon Kinesis Firehose
--   delivery stream). 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>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>
--   <li><a>disInputStartingPositionConfiguration</a> - Point at which you
--   want Amazon Kinesis Analytics to start reading records from the
--   specified streaming source discovery purposes.</li>
--   </ul>
discoverInputSchema :: Text -> Text -> InputStartingPositionConfiguration -> DiscoverInputSchema

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

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

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

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

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

-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DiscoverInputSchema.DiscoverInputSchemaResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DescribeApplication.DescribeApplicationResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationReferenceDataSource.DeleteApplicationReferenceDataSourceResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplicationOutput.DeleteApplicationOutputResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.DeleteApplication.DeleteApplicationResponse


-- | 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 five streaming 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, with the option of
--   renaming, casting and dropping columns as desired.
--   
--   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 five streaming 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>caOutputs</a> - You can configure application output to write
--   data from any of the in-application streams to up to five
--   destinations. These destinations can be Amazon Kinesis streams, Amazon
--   Kinesis Firehose delivery streams, or both. In the configuration, you
--   specify the in-application stream name, the destination stream 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 on your behalf. In the output
--   configuration, you also provide the output stream Amazon Resource Name
--   (ARN) and 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 this stream 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 input data and generates a running
--   average of the number of advertisement clicks by vendor. You can also
--   provide a series of SQL statements, where output of one statement can
--   be used as the input for the next statement. 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]

-- | You can configure application output to write data from any of the
--   in-application streams to up to five destinations. These destinations
--   can be Amazon Kinesis streams, Amazon Kinesis Firehose delivery
--   streams, or both. In the configuration, you specify the in-application
--   stream name, the destination stream 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 on your behalf. In the output configuration, you also provide
--   the output stream Amazon Resource Name (ARN) and 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 this stream 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
--   input data and generates a running average of the number of
--   advertisement clicks by vendor. You can also provide a series of SQL
--   statements, where output of one statement can be used as the input for
--   the next statement. 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.CreateApplication.CreateApplicationResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationReferenceDataSource.AddApplicationReferenceDataSourceResponse


-- | 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 or a Firehose delivery
--   stream), 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 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 or an Amazon Kinesis Firehose delivery stream), 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 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 or an Amazon
--   Kinesis Firehose delivery stream), 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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationOutput.AddApplicationOutputResponse


-- | 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> - Undocumented member.</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

-- | Undocumented member.
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 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
instance Control.DeepSeq.NFData Network.AWS.KinesisAnalytics.AddApplicationInput.AddApplicationInputResponse


-- | 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 Kinesis Streams ProvisionedThroughputExceededException.
_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

-- | Data format is not valid, 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>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> - Timestamp when the application version
--   was created.</li>
--   <li><a>adLastUpdateTimestamp</a> - Timestamp 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 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)

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

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

-- | 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 will be routed to these
--   in-application input streams. (see <a>Configuring Application
--   Input</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.</li>
--   <li><a>iKinesisFirehoseInput</a> - If the streaming source is an
--   Amazon Kinesis Firehose delivery stream, identifies the Firehose
--   delivery stream's ARN and an IAM role that enables Amazon Kinesis
--   Analytics to access the stream on your behalf.</li>
--   <li><a>iNamePrefix</a> - Name prefix to use when creating
--   in-application stream. Suppose you specify a prefix
--   <a>MyInApplicationStream</a>. Kinesis Analytics will then create one
--   or more (as per the <tt>InputParallelism</tt> count you specified)
--   in-application streams with names <a>MyInApplicationStream_001</a>,
--   <a>MyInApplicationStream_002</a> 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 will be routed to these in-application input streams. (see
--   <a>Configuring Application Input</a> .
iInputParallelism :: Lens' Input (Maybe InputParallelism)

-- | 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.
iKinesisStreamsInput :: Lens' Input (Maybe KinesisStreamsInput)

-- | If the streaming source is an Amazon Kinesis Firehose delivery stream,
--   identifies the Firehose delivery stream's ARN and an IAM role that
--   enables Amazon Kinesis Analytics to access the stream on your behalf.
iKinesisFirehoseInput :: Lens' Input (Maybe KinesisFirehoseInput)

-- | Name prefix to use when creating in-application stream. Suppose you
--   specify a prefix <a>MyInApplicationStream</a>. Kinesis Analytics will
--   then create one or more (as per the <tt>InputParallelism</tt> count
--   you specified) in-application streams with names
--   <a>MyInApplicationStream_001</a>, <a>MyInApplicationStream_002</a> 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 Firehose delivery 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>idInputSchema</a> - Undocumented member.</li>
--   <li><a>idKinesisStreamsInputDescription</a> - If an Amazon Kinesis
--   stream is configured as streaming source, provides Amazon Kinesis
--   stream's 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>
--   </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 Firehose delivery stream's Amazon
--   Resource Name (ARN) and an IAM role that enables Amazon Kinesis
--   Analytics to access the stream on your behalf.
idKinesisFirehoseInputDescription :: Lens' InputDescription (Maybe KinesisFirehoseInputDescription)

-- | Undocumented member.
idInputSchema :: Lens' InputDescription (Maybe SourceSchema)

-- | If an Amazon Kinesis stream is configured as streaming source,
--   provides Amazon Kinesis stream's 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)

-- | Describes the number of in-application streams to create for a given
--   streaming source. For information about parallellism, 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)

-- | 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>LATEST</tt> - Start reading just after the most recent
--   record in the stream. * <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>LATEST</tt> - Start reading
--   just after the most recent record in the stream. *
--   <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>iuKinesisStreamsInputUpdate</a> - If a Amazon Kinesis stream is
--   the streaming source to be updated, provides an updated stream ARN and
--   IAM role ARN.</li>
--   <li><a>iuInputParallelismUpdate</a> - Describes the parallelism
--   updates (the number in-application streams Kinesis Analytics creates
--   for the specific streaming source).</li>
--   <li><a>iuNamePrefixUpdate</a> - Name prefix for in-application
--   stream(s) that 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 Amazon Resource Name (ARN) and IAM role
--   ARN.</li>
--   <li><a>iuInputId</a> - Input ID of the application input to be
--   updated.</li>
--   </ul>
inputUpdate :: Text -> InputUpdate

-- | If a Amazon Kinesis stream is the streaming source to be updated,
--   provides an updated stream ARN and IAM role ARN.
iuKinesisStreamsInputUpdate :: Lens' InputUpdate (Maybe KinesisStreamsInputUpdate)

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

-- | Name prefix for in-application stream(s) that 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 Amazon Resource Name (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. For example, consider the following JSON record:
--   In the <tt>RecordRowPath</tt> , <tt>"$"</tt> refers to the root and
--   path <tt>"$.vehicle.Model"</tt> refers to the specific
--   <tt><a>Model</a></tt> key in the JSON.</li>
--   </ul>
jsonMappingParameters :: Text -> JSONMappingParameters

-- | Path to the top-level parent that contains the records. For example,
--   consider the following JSON record: In the <tt>RecordRowPath</tt> ,
--   <tt>"$"</tt> refers to the root and path <tt>"$.vehicle.Model"</tt>
--   refers to the specific <tt><a>Model</a></tt> key in the JSON.
jmpRecordRowPath :: Lens' JSONMappingParameters Text

-- | Identifies an Amazon Kinesis Firehose delivery stream as the streaming
--   source. You provide the Firehose 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 Firehose 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 Firehose 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> - Amazon Resource Name (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> - ARN of the input Amazon Kinesis
--   Firehose delivery stream to read.</li>
--   </ul>
kinesisFirehoseInputUpdate :: KinesisFirehoseInputUpdate

-- | Amazon Resource Name (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)

-- | 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 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 a 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 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.
--   
--   You can configure your application to write output to up to five
--   destinations.
--   
--   <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>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> - Undocumented member.</li>
--   </ul>
output :: Text -> DestinationSchema -> Output

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

-- | Undocumented member.
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>
--   </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 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> - Undocumented member.</li>
--   <li><a>ouKinesisFirehoseOutputUpdate</a> - Describes a 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>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)

-- | Undocumented member.
ouDestinationSchemaUpdate :: Lens' OutputUpdate (Maybe DestinationSchema)

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

-- | 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> - Undocumented member.</li>
--   <li><a>rfRecordFormatType</a> - The type of record format.</li>
--   </ul>
recordFormat :: RecordFormatType -> RecordFormat

-- | Undocumented member.
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> - Undocumented member.</li>
--   <li><a>rdsTableName</a> - Name of the in-application table to
--   create.</li>
--   <li><a>rdsReferenceSchema</a> - Undocumented member.</li>
--   </ul>
referenceDataSource :: Text -> SourceSchema -> ReferenceDataSource

-- | Undocumented member.
rdsS3ReferenceDataSource :: Lens' ReferenceDataSource (Maybe S3ReferenceDataSource)

-- | Name of the in-application table to create.
rdsTableName :: Lens' ReferenceDataSource Text

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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)

-- | Undocumented member.
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

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