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


-- | Amazon DynamoDB Streams 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.DynamoDBStreams</a> or <a>the AWS documentation</a>
--   to get started.
@package amazonka-dynamodb-streams
@version 1.4.5


module Network.AWS.DynamoDBStreams.Types

-- | API version <tt>2012-08-10</tt> of the Amazon DynamoDB Streams SDK
--   configuration.
dynamoDBStreams :: Service

-- | The shard iterator has expired and can no longer be used to retrieve
--   stream records. A shard iterator expires 15 minutes after it is
--   retrieved using the <i>GetShardIterator</i> action.
_ExpiredIteratorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | An error occurred on the server side.
_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation attempted to read past the oldest stream record in a
--   shard.
--   
--   In DynamoDB Streams, there is a 24 hour limit on data retention.
--   Stream records whose age exceeds this limit are subject to removal
--   (trimming) from the stream. You might receive a
--   TrimmedDataAccessException if:
--   
--   <ul>
--   <li>You request a shard iterator with a sequence number older than the
--   trim point (24 hours).</li>
--   <li>You obtain a shard iterator, but before you use the iterator in a
--   <i>GetRecords</i> request, a stream record in the shard exceeds the 24
--   hour period and is trimmed. This causes the iterator to access a
--   record that no longer exists.</li>
--   </ul>
_TrimmedDataAccessException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation tried to access a nonexistent stream.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your request rate is too high. The AWS SDKs for DynamoDB automatically
--   retry requests that receive this exception. Your request is eventually
--   successful, unless your retry queue is too large to finish. Reduce the
--   frequency of requests and use exponential backoff. For more
--   information, go to <a>Error Retries and Exponential Backoff</a> in the
--   <i>Amazon DynamoDB Developer Guide</i> .
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
data KeyType
Hash :: KeyType
Range :: KeyType
data OperationType
Insert :: OperationType
Modify :: OperationType
Remove :: OperationType
data ShardIteratorType
AfterSequenceNumber :: ShardIteratorType
AtSequenceNumber :: ShardIteratorType
Latest :: ShardIteratorType
TrimHorizon :: ShardIteratorType
data StreamStatus
Disabled :: StreamStatus
Disabling :: StreamStatus
Enabled :: StreamStatus
Enabling :: StreamStatus
data StreamViewType
KeysOnly :: StreamViewType
NewAndOldImages :: StreamViewType
NewImage :: StreamViewType
OldImage :: StreamViewType

-- | Represents the data for an attribute. You can set one, and only one,
--   of the elements.
--   
--   Each attribute in an item is a name-value pair. An attribute can be
--   single-valued or multi-valued set. For example, a book item can have
--   title and authors attributes. Each book has one title but can have
--   many authors. The multi-valued attribute is a set; duplicate values
--   are not allowed.
--   
--   <i>See:</i> <a>attributeValue</a> smart constructor.
data AttributeValue

-- | Creates a value of <a>AttributeValue</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>avL</a> - A List data type.</li>
--   <li><a>avNS</a> - A Number Set data type.</li>
--   <li><a>avM</a> - A Map data type.</li>
--   <li><a>avNULL</a> - A Null data type.</li>
--   <li><a>avN</a> - A Number data type.</li>
--   <li><a>avBS</a> - A Binary Set data type.</li>
--   <li><a>avB</a> - A Binary data type.-- <i>Note:</i> This <tt>Lens</tt>
--   automatically encodes and decodes Base64 data. The underlying
--   isomorphism will encode to Base64 representation during serialisation,
--   and decode from Base64 representation during deserialisation. This
--   <tt>Lens</tt> accepts and returns only raw unencoded data.</li>
--   <li><a>avSS</a> - A String Set data type.</li>
--   <li><a>avS</a> - A String data type.</li>
--   <li><a>avBOOL</a> - A Boolean data type.</li>
--   </ul>
attributeValue :: AttributeValue

-- | A List data type.
avL :: Lens' AttributeValue [AttributeValue]

-- | A Number Set data type.
avNS :: Lens' AttributeValue [Text]

-- | A Map data type.
avM :: Lens' AttributeValue (HashMap Text AttributeValue)

-- | A Null data type.
avNULL :: Lens' AttributeValue (Maybe Bool)

-- | A Number data type.
avN :: Lens' AttributeValue (Maybe Text)

-- | A Binary Set data type.
avBS :: Lens' AttributeValue [ByteString]

-- | A Binary data type.-- <i>Note:</i> This <tt>Lens</tt> automatically
--   encodes and decodes Base64 data. The underlying isomorphism will
--   encode to Base64 representation during serialisation, and decode from
--   Base64 representation during deserialisation. This <tt>Lens</tt>
--   accepts and returns only raw unencoded data.
avB :: Lens' AttributeValue (Maybe ByteString)

-- | A String Set data type.
avSS :: Lens' AttributeValue [Text]

-- | A String data type.
avS :: Lens' AttributeValue (Maybe Text)

-- | A Boolean data type.
avBOOL :: Lens' AttributeValue (Maybe Bool)

-- | Represents <i>a single element</i> of a key schema. A key schema
--   specifies the attributes that make up the primary key of a table, or
--   the key attributes of an index.
--   
--   A <i>KeySchemaElement</i> represents exactly one attribute of the
--   primary key. For example, a simple primary key (partition key) would
--   be represented by one <i>KeySchemaElement</i> . A composite primary
--   key (partition key and sort key) would require one
--   <i>KeySchemaElement</i> for the partition key, and another
--   <i>KeySchemaElement</i> for the sort key.
--   
--   <i>See:</i> <a>keySchemaElement</a> smart constructor.
data KeySchemaElement

-- | Creates a value of <a>KeySchemaElement</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>kseAttributeName</a> - The name of a key attribute.</li>
--   <li><a>kseKeyType</a> - The attribute data, consisting of the data
--   type and the attribute value itself.</li>
--   </ul>
keySchemaElement :: Text -> KeyType -> KeySchemaElement

-- | The name of a key attribute.
kseAttributeName :: Lens' KeySchemaElement Text

-- | The attribute data, consisting of the data type and the attribute
--   value itself.
kseKeyType :: Lens' KeySchemaElement KeyType

-- | A description of a unique event within a stream.
--   
--   <i>See:</i> <a>record</a> smart constructor.
data Record

-- | Creates a value of <a>Record</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>rEventVersion</a> - The version number of the stream record
--   format. This number is updated whenever the structure of <i>Record</i>
--   is modified. Client applications must not assume that
--   <i>eventVersion</i> will remain at a particular value, as this number
--   is subject to change at any time. In general, <i>eventVersion</i> will
--   only increase as the low-level DynamoDB Streams API evolves.</li>
--   <li><a>rDynamodb</a> - The main body of the stream record, containing
--   all of the DynamoDB-specific fields.</li>
--   <li><a>rAwsRegion</a> - The region in which the <i>GetRecords</i>
--   request was received.</li>
--   <li><a>rEventName</a> - The type of data modification that was
--   performed on the DynamoDB table: * <tt>INSERT</tt> - a new item was
--   added to the table. * <tt>MODIFY</tt> - one or more of an existing
--   item's attributes were modified. * <tt>REMOVE</tt> - the item was
--   deleted from the table</li>
--   <li><a>rEventSource</a> - The AWS service from which the stream record
--   originated. For DynamoDB Streams, this is <i>aws:dynamodb</i> .</li>
--   <li><a>rEventId</a> - A globally unique identifier for the event that
--   was recorded in this stream record.</li>
--   </ul>
record :: Record

-- | The version number of the stream record format. This number is updated
--   whenever the structure of <i>Record</i> is modified. Client
--   applications must not assume that <i>eventVersion</i> will remain at a
--   particular value, as this number is subject to change at any time. In
--   general, <i>eventVersion</i> will only increase as the low-level
--   DynamoDB Streams API evolves.
rEventVersion :: Lens' Record (Maybe Text)

-- | The main body of the stream record, containing all of the
--   DynamoDB-specific fields.
rDynamodb :: Lens' Record (Maybe StreamRecord)

-- | The region in which the <i>GetRecords</i> request was received.
rAwsRegion :: Lens' Record (Maybe Text)

-- | The type of data modification that was performed on the DynamoDB
--   table: * <tt>INSERT</tt> - a new item was added to the table. *
--   <tt>MODIFY</tt> - one or more of an existing item's attributes were
--   modified. * <tt>REMOVE</tt> - the item was deleted from the table
rEventName :: Lens' Record (Maybe OperationType)

-- | The AWS service from which the stream record originated. For DynamoDB
--   Streams, this is <i>aws:dynamodb</i> .
rEventSource :: Lens' Record (Maybe Text)

-- | A globally unique identifier for the event that was recorded in this
--   stream record.
rEventId :: Lens' Record (Maybe Text)

-- | The beginning and ending sequence numbers for the stream records
--   contained within a shard.
--   
--   <i>See:</i> <a>sequenceNumberRange</a> smart constructor.
data SequenceNumberRange

-- | Creates a value of <a>SequenceNumberRange</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>snrStartingSequenceNumber</a> - The first sequence number.</li>
--   <li><a>snrEndingSequenceNumber</a> - The last sequence number.</li>
--   </ul>
sequenceNumberRange :: SequenceNumberRange

-- | The first sequence number.
snrStartingSequenceNumber :: Lens' SequenceNumberRange (Maybe Text)

-- | The last sequence number.
snrEndingSequenceNumber :: Lens' SequenceNumberRange (Maybe Text)

-- | A uniquely identified group of stream records within a stream.
--   
--   <i>See:</i> <a>shard</a> smart constructor.
data Shard

-- | Creates a value of <a>Shard</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>sParentShardId</a> - The shard ID of the current shard's
--   parent.</li>
--   <li><a>sSequenceNumberRange</a> - The range of possible sequence
--   numbers for the shard.</li>
--   <li><a>sShardId</a> - The system-generated identifier for this
--   shard.</li>
--   </ul>
shard :: Shard

-- | The shard ID of the current shard's parent.
sParentShardId :: Lens' Shard (Maybe Text)

-- | The range of possible sequence numbers for the shard.
sSequenceNumberRange :: Lens' Shard (Maybe SequenceNumberRange)

-- | The system-generated identifier for this shard.
sShardId :: Lens' Shard (Maybe Text)

-- | Represents all of the data describing a particular stream.
--   
--   <i>See:</i> <a>stream</a> smart constructor.
data Stream

-- | Creates a value of <a>Stream</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>sStreamLabel</a> - A timestamp, in ISO 8601 format, for this
--   stream. Note that <i>LatestStreamLabel</i> is not a unique identifier
--   for the stream, because it is possible that a stream from another
--   table might have the same timestamp. However, the combination of the
--   following three elements is guaranteed to be unique: * the AWS
--   customer ID. * the table name * the <i>StreamLabel</i></li>
--   <li><a>sStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   <li><a>sTableName</a> - The DynamoDB table with which the stream is
--   associated.</li>
--   </ul>
stream :: Stream

-- | A timestamp, in ISO 8601 format, for this stream. Note that
--   <i>LatestStreamLabel</i> is not a unique identifier for the stream,
--   because it is possible that a stream from another table might have the
--   same timestamp. However, the combination of the following three
--   elements is guaranteed to be unique: * the AWS customer ID. * the
--   table name * the <i>StreamLabel</i>
sStreamLabel :: Lens' Stream (Maybe Text)

-- | The Amazon Resource Name (ARN) for the stream.
sStreamARN :: Lens' Stream (Maybe Text)

-- | The DynamoDB table with which the stream is associated.
sTableName :: Lens' Stream (Maybe Text)

-- | Represents all of the data describing a particular stream.
--   
--   <i>See:</i> <a>streamDescription</a> smart constructor.
data StreamDescription

-- | Creates a value of <a>StreamDescription</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>sdLastEvaluatedShardId</a> - The shard ID of the item where the
--   operation stopped, inclusive of the previous result set. Use this
--   value to start a new operation, excluding this value in the new
--   request. If <tt>LastEvaluatedShardId</tt> is empty, then the "last
--   page" of results has been processed and there is currently no more
--   data to be retrieved. If <tt>LastEvaluatedShardId</tt> is not empty,
--   it does not necessarily mean that there is more data in the result
--   set. The only way to know when you have reached the end of the result
--   set is when <tt>LastEvaluatedShardId</tt> is empty.</li>
--   <li><a>sdStreamLabel</a> - A timestamp, in ISO 8601 format, for this
--   stream. Note that <i>LatestStreamLabel</i> is not a unique identifier
--   for the stream, because it is possible that a stream from another
--   table might have the same timestamp. However, the combination of the
--   following three elements is guaranteed to be unique: * the AWS
--   customer ID. * the table name * the <i>StreamLabel</i></li>
--   <li><a>sdStreamStatus</a> - Indicates the current status of the
--   stream: * <tt>ENABLING</tt> - Streams is currently being enabled on
--   the DynamoDB table. * <tt>ENABLED</tt> - the stream is enabled. *
--   <tt>DISABLING</tt> - Streams is currently being disabled on the
--   DynamoDB table. * <tt>DISABLED</tt> - the stream is disabled.</li>
--   <li><a>sdKeySchema</a> - The key attribute(s) of the stream's DynamoDB
--   table.</li>
--   <li><a>sdStreamViewType</a> - Indicates the format of the records
--   within this stream: * <tt>KEYS_ONLY</tt> - only the key attributes of
--   items that were modified in the DynamoDB table. * <tt>NEW_IMAGE</tt> -
--   entire items from the table, as they appeared after they were
--   modified. * <tt>OLD_IMAGE</tt> - entire items from the table, as they
--   appeared before they were modified. * <tt>NEW_AND_OLD_IMAGES</tt> -
--   both the new and the old images of the items from the table.</li>
--   <li><a>sdStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   <li><a>sdShards</a> - The shards that comprise the stream.</li>
--   <li><a>sdTableName</a> - The DynamoDB table with which the stream is
--   associated.</li>
--   <li><a>sdCreationRequestDateTime</a> - The date and time when the
--   request to create this stream was issued.</li>
--   </ul>
streamDescription :: StreamDescription

-- | The shard ID of the item where the operation stopped, inclusive of the
--   previous result set. Use this value to start a new operation,
--   excluding this value in the new request. If
--   <tt>LastEvaluatedShardId</tt> is empty, then the "last page" of
--   results has been processed and there is currently no more data to be
--   retrieved. If <tt>LastEvaluatedShardId</tt> is not empty, it does not
--   necessarily mean that there is more data in the result set. The only
--   way to know when you have reached the end of the result set is when
--   <tt>LastEvaluatedShardId</tt> is empty.
sdLastEvaluatedShardId :: Lens' StreamDescription (Maybe Text)

-- | A timestamp, in ISO 8601 format, for this stream. Note that
--   <i>LatestStreamLabel</i> is not a unique identifier for the stream,
--   because it is possible that a stream from another table might have the
--   same timestamp. However, the combination of the following three
--   elements is guaranteed to be unique: * the AWS customer ID. * the
--   table name * the <i>StreamLabel</i>
sdStreamLabel :: Lens' StreamDescription (Maybe Text)

-- | Indicates the current status of the stream: * <tt>ENABLING</tt> -
--   Streams is currently being enabled on the DynamoDB table. *
--   <tt>ENABLED</tt> - the stream is enabled. * <tt>DISABLING</tt> -
--   Streams is currently being disabled on the DynamoDB table. *
--   <tt>DISABLED</tt> - the stream is disabled.
sdStreamStatus :: Lens' StreamDescription (Maybe StreamStatus)

-- | The key attribute(s) of the stream's DynamoDB table.
sdKeySchema :: Lens' StreamDescription (Maybe (NonEmpty KeySchemaElement))

-- | Indicates the format of the records within this stream: *
--   <tt>KEYS_ONLY</tt> - only the key attributes of items that were
--   modified in the DynamoDB table. * <tt>NEW_IMAGE</tt> - entire items
--   from the table, as they appeared after they were modified. *
--   <tt>OLD_IMAGE</tt> - entire items from the table, as they appeared
--   before they were modified. * <tt>NEW_AND_OLD_IMAGES</tt> - both the
--   new and the old images of the items from the table.
sdStreamViewType :: Lens' StreamDescription (Maybe StreamViewType)

-- | The Amazon Resource Name (ARN) for the stream.
sdStreamARN :: Lens' StreamDescription (Maybe Text)

-- | The shards that comprise the stream.
sdShards :: Lens' StreamDescription [Shard]

-- | The DynamoDB table with which the stream is associated.
sdTableName :: Lens' StreamDescription (Maybe Text)

-- | The date and time when the request to create this stream was issued.
sdCreationRequestDateTime :: Lens' StreamDescription (Maybe UTCTime)

-- | A description of a single data modification that was performed on an
--   item in a DynamoDB table.
--   
--   <i>See:</i> <a>streamRecord</a> smart constructor.
data StreamRecord

-- | Creates a value of <a>StreamRecord</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>srSizeBytes</a> - The size of the stream record, in bytes.</li>
--   <li><a>srSequenceNumber</a> - The sequence number of the stream
--   record.</li>
--   <li><a>srApproximateCreationDateTime</a> - The approximate date and
--   time when the stream record was created, in <a>UNIX epoch time</a>
--   format.</li>
--   <li><a>srStreamViewType</a> - The type of data from the modified
--   DynamoDB item that was captured in this stream record: *
--   <tt>KEYS_ONLY</tt> - only the key attributes of the modified item. *
--   <tt>NEW_IMAGE</tt> - the entire item, as it appeared after it was
--   modified. * <tt>OLD_IMAGE</tt> - the entire item, as it appeared
--   before it was modified. * <tt>NEW_AND_OLD_IMAGES</tt> - both the new
--   and the old item images of the item.</li>
--   <li><a>srKeys</a> - The primary key attribute(s) for the DynamoDB item
--   that was modified.</li>
--   <li><a>srOldImage</a> - The item in the DynamoDB table as it appeared
--   before it was modified.</li>
--   <li><a>srNewImage</a> - The item in the DynamoDB table as it appeared
--   after it was modified.</li>
--   </ul>
streamRecord :: StreamRecord

-- | The size of the stream record, in bytes.
srSizeBytes :: Lens' StreamRecord (Maybe Natural)

-- | The sequence number of the stream record.
srSequenceNumber :: Lens' StreamRecord (Maybe Text)

-- | The approximate date and time when the stream record was created, in
--   <a>UNIX epoch time</a> format.
srApproximateCreationDateTime :: Lens' StreamRecord (Maybe UTCTime)

-- | The type of data from the modified DynamoDB item that was captured in
--   this stream record: * <tt>KEYS_ONLY</tt> - only the key attributes of
--   the modified item. * <tt>NEW_IMAGE</tt> - the entire item, as it
--   appeared after it was modified. * <tt>OLD_IMAGE</tt> - the entire
--   item, as it appeared before it was modified. *
--   <tt>NEW_AND_OLD_IMAGES</tt> - both the new and the old item images of
--   the item.
srStreamViewType :: Lens' StreamRecord (Maybe StreamViewType)

-- | The primary key attribute(s) for the DynamoDB item that was modified.
srKeys :: Lens' StreamRecord (HashMap Text AttributeValue)

-- | The item in the DynamoDB table as it appeared before it was modified.
srOldImage :: Lens' StreamRecord (HashMap Text AttributeValue)

-- | The item in the DynamoDB table as it appeared after it was modified.
srNewImage :: Lens' StreamRecord (HashMap Text AttributeValue)


module Network.AWS.DynamoDBStreams.Waiters


-- | Returns an array of stream ARNs associated with the current account
--   and endpoint. If the <tt>TableName</tt> parameter is present, then
--   <i>ListStreams</i> will return only the streams ARNs for that table.
module Network.AWS.DynamoDBStreams.ListStreams

-- | Creates a value of <a>ListStreams</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>lsExclusiveStartStreamARN</a> - The ARN (Amazon Resource Name)
--   of the first item that this operation will evaluate. Use the value
--   that was returned for <tt>LastEvaluatedStreamArn</tt> in the previous
--   operation.</li>
--   <li><a>lsLimit</a> - The maximum number of streams to return. The
--   upper limit is 100.</li>
--   <li><a>lsTableName</a> - If this parameter is provided, then only the
--   streams associated with this table name are returned.</li>
--   </ul>
listStreams :: ListStreams

-- | Represents the input of a <i>ListStreams</i> operation.
--   
--   <i>See:</i> <a>listStreams</a> smart constructor.
data ListStreams

-- | The ARN (Amazon Resource Name) of the first item that this operation
--   will evaluate. Use the value that was returned for
--   <tt>LastEvaluatedStreamArn</tt> in the previous operation.
lsExclusiveStartStreamARN :: Lens' ListStreams (Maybe Text)

-- | The maximum number of streams to return. The upper limit is 100.
lsLimit :: Lens' ListStreams (Maybe Natural)

-- | If this parameter is provided, then only the streams associated with
--   this table name are returned.
lsTableName :: Lens' ListStreams (Maybe Text)

-- | Creates a value of <a>ListStreamsResponse</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>lsrsLastEvaluatedStreamARN</a> - The stream ARN of the item
--   where the operation stopped, inclusive of the previous result set. Use
--   this value to start a new operation, excluding this value in the new
--   request. If <tt>LastEvaluatedStreamArn</tt> is empty, then the "last
--   page" of results has been processed and there is no more data to be
--   retrieved. If <tt>LastEvaluatedStreamArn</tt> is not empty, it does
--   not necessarily mean that there is more data in the result set. The
--   only way to know when you have reached the end of the result set is
--   when <tt>LastEvaluatedStreamArn</tt> is empty.</li>
--   <li><a>lsrsStreams</a> - A list of stream descriptors associated with
--   the current account and endpoint.</li>
--   <li><a>lsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listStreamsResponse :: Int -> ListStreamsResponse

-- | Represents the output of a <i>ListStreams</i> operation.
--   
--   <i>See:</i> <a>listStreamsResponse</a> smart constructor.
data ListStreamsResponse

-- | The stream ARN of the item where the operation stopped, inclusive of
--   the previous result set. Use this value to start a new operation,
--   excluding this value in the new request. If
--   <tt>LastEvaluatedStreamArn</tt> is empty, then the "last page" of
--   results has been processed and there is no more data to be retrieved.
--   If <tt>LastEvaluatedStreamArn</tt> is not empty, it does not
--   necessarily mean that there is more data in the result set. The only
--   way to know when you have reached the end of the result set is when
--   <tt>LastEvaluatedStreamArn</tt> is empty.
lsrsLastEvaluatedStreamARN :: Lens' ListStreamsResponse (Maybe Text)

-- | A list of stream descriptors associated with the current account and
--   endpoint.
lsrsStreams :: Lens' ListStreamsResponse [Stream]

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


-- | Returns a shard iterator. A shard iterator provides information about
--   how to retrieve the stream records from within a shard. Use the shard
--   iterator in a subsequent <tt>GetRecords</tt> request to read the
--   stream records from the shard.
module Network.AWS.DynamoDBStreams.GetShardIterator

-- | Creates a value of <a>GetShardIterator</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>gsiSequenceNumber</a> - The sequence number of a stream record
--   in the shard from which to start reading.</li>
--   <li><a>gsiStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   <li><a>gsiShardId</a> - The identifier of the shard. The iterator will
--   be returned for this shard ID.</li>
--   <li><a>gsiShardIteratorType</a> - Determines how the shard iterator is
--   used to start reading stream records from the shard: *
--   <tt>AT_SEQUENCE_NUMBER</tt> - Start reading exactly from the position
--   denoted by a specific sequence number. *
--   <tt>AFTER_SEQUENCE_NUMBER</tt> - Start reading right after the
--   position denoted by a specific sequence number. *
--   <tt>TRIM_HORIZON</tt> - Start reading at the last (untrimmed) stream
--   record, which is the oldest record in the shard. In DynamoDB Streams,
--   there is a 24 hour limit on data retention. Stream records whose age
--   exceeds this limit are subject to removal (trimming) from the stream.
--   * <tt>LATEST</tt> - Start reading just after the most recent stream
--   record in the shard, so that you always read the most recent data in
--   the shard.</li>
--   </ul>
getShardIterator :: Text -> Text -> ShardIteratorType -> GetShardIterator

-- | Represents the input of a <i>GetShardIterator</i> operation.
--   
--   <i>See:</i> <a>getShardIterator</a> smart constructor.
data GetShardIterator

-- | The sequence number of a stream record in the shard from which to
--   start reading.
gsiSequenceNumber :: Lens' GetShardIterator (Maybe Text)

-- | The Amazon Resource Name (ARN) for the stream.
gsiStreamARN :: Lens' GetShardIterator Text

-- | The identifier of the shard. The iterator will be returned for this
--   shard ID.
gsiShardId :: Lens' GetShardIterator Text

-- | Determines how the shard iterator is used to start reading stream
--   records from the shard: * <tt>AT_SEQUENCE_NUMBER</tt> - Start reading
--   exactly from the position denoted by a specific sequence number. *
--   <tt>AFTER_SEQUENCE_NUMBER</tt> - Start reading right after the
--   position denoted by a specific sequence number. *
--   <tt>TRIM_HORIZON</tt> - Start reading at the last (untrimmed) stream
--   record, which is the oldest record in the shard. In DynamoDB Streams,
--   there is a 24 hour limit on data retention. Stream records whose age
--   exceeds this limit are subject to removal (trimming) from the stream.
--   * <tt>LATEST</tt> - Start reading just after the most recent stream
--   record in the shard, so that you always read the most recent data in
--   the shard.
gsiShardIteratorType :: Lens' GetShardIterator ShardIteratorType

-- | Creates a value of <a>GetShardIteratorResponse</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>gsirsShardIterator</a> - The position in the shard from which
--   to start reading stream records sequentially. A shard iterator
--   specifies this position using the sequence number of a stream record
--   in a shard.</li>
--   <li><a>gsirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getShardIteratorResponse :: Int -> GetShardIteratorResponse

-- | Represents the output of a <i>GetShardIterator</i> operation.
--   
--   <i>See:</i> <a>getShardIteratorResponse</a> smart constructor.
data GetShardIteratorResponse

-- | The position in the shard from which to start reading stream records
--   sequentially. A shard iterator specifies this position using the
--   sequence number of a stream record in a shard.
gsirsShardIterator :: Lens' GetShardIteratorResponse (Maybe Text)

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


-- | Retrieves the stream records from a given shard.
--   
--   Specify a shard iterator using the <tt>ShardIterator</tt> parameter.
--   The shard iterator specifies the position in the shard from which you
--   want to start reading stream records sequentially. If there are no
--   stream records available in the portion of the shard that the iterator
--   points to, <tt>GetRecords</tt> returns an empty list. Note that it
--   might take multiple calls to get to a portion of the shard that
--   contains stream records.
module Network.AWS.DynamoDBStreams.GetRecords

-- | Creates a value of <a>GetRecords</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>grLimit</a> - The maximum number of records to return from the
--   shard. The upper limit is 1000.</li>
--   <li><a>grShardIterator</a> - A shard iterator that was retrieved from
--   a previous GetShardIterator operation. This iterator can be used to
--   access the stream records in this shard.</li>
--   </ul>
getRecords :: Text -> GetRecords

-- | Represents the input of a <i>GetRecords</i> operation.
--   
--   <i>See:</i> <a>getRecords</a> smart constructor.
data GetRecords

-- | The maximum number of records to return from the shard. The upper
--   limit is 1000.
grLimit :: Lens' GetRecords (Maybe Natural)

-- | A shard iterator that was retrieved from a previous GetShardIterator
--   operation. This iterator can be used to access the stream records in
--   this shard.
grShardIterator :: Lens' GetRecords Text

-- | Creates a value of <a>GetRecordsResponse</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>grrsRecords</a> - The stream records from the shard, which were
--   retrieved using the shard iterator.</li>
--   <li><a>grrsNextShardIterator</a> - The next position in the shard from
--   which to start sequentially reading stream records. If set to
--   <tt>null</tt> , the shard has been closed and the requested iterator
--   will not return any more data.</li>
--   <li><a>grrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRecordsResponse :: Int -> GetRecordsResponse

-- | Represents the output of a <i>GetRecords</i> operation.
--   
--   <i>See:</i> <a>getRecordsResponse</a> smart constructor.
data GetRecordsResponse

-- | The stream records from the shard, which were retrieved using the
--   shard iterator.
grrsRecords :: Lens' GetRecordsResponse [Record]

-- | The next position in the shard from which to start sequentially
--   reading stream records. If set to <tt>null</tt> , the shard has been
--   closed and the requested iterator will not return any more data.
grrsNextShardIterator :: Lens' GetRecordsResponse (Maybe Text)

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


-- | Returns information about a stream, including the current status of
--   the stream, its Amazon Resource Name (ARN), the composition of its
--   shards, and its corresponding DynamoDB table.
--   
--   Each shard in the stream has a <tt>SequenceNumberRange</tt> associated
--   with it. If the <tt>SequenceNumberRange</tt> has a
--   <tt>StartingSequenceNumber</tt> but no <tt>EndingSequenceNumber</tt> ,
--   then the shard is still open (able to receive more stream records). If
--   both <tt>StartingSequenceNumber</tt> and <tt>EndingSequenceNumber</tt>
--   are present, then that shard is closed and can no longer receive more
--   data.
module Network.AWS.DynamoDBStreams.DescribeStream

-- | Creates a value of <a>DescribeStream</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>dsExclusiveStartShardId</a> - The shard ID of the first item
--   that this operation will evaluate. Use the value that was returned for
--   <tt>LastEvaluatedShardId</tt> in the previous operation.</li>
--   <li><a>dsLimit</a> - The maximum number of shard objects to return.
--   The upper limit is 100.</li>
--   <li><a>dsStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   </ul>
describeStream :: Text -> DescribeStream

-- | Represents the input of a <i>DescribeStream</i> operation.
--   
--   <i>See:</i> <a>describeStream</a> smart constructor.
data DescribeStream

-- | The shard ID of the first item that this operation will evaluate. Use
--   the value that was returned for <tt>LastEvaluatedShardId</tt> in the
--   previous operation.
dsExclusiveStartShardId :: Lens' DescribeStream (Maybe Text)

-- | The maximum number of shard objects to return. The upper limit is 100.
dsLimit :: Lens' DescribeStream (Maybe Natural)

-- | The Amazon Resource Name (ARN) for the stream.
dsStreamARN :: Lens' DescribeStream Text

-- | Creates a value of <a>DescribeStreamResponse</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>dsrsStreamDescription</a> - A complete description of the
--   stream, including its creation date and time, the DynamoDB table
--   associated with the stream, the shard IDs within the stream, and the
--   beginning and ending sequence numbers of stream records within the
--   shards.</li>
--   <li><a>dsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeStreamResponse :: Int -> DescribeStreamResponse

-- | Represents the output of a <i>DescribeStream</i> operation.
--   
--   <i>See:</i> <a>describeStreamResponse</a> smart constructor.
data DescribeStreamResponse

-- | A complete description of the stream, including its creation date and
--   time, the DynamoDB table associated with the stream, the shard IDs
--   within the stream, and the beginning and ending sequence numbers of
--   stream records within the shards.
dsrsStreamDescription :: Lens' DescribeStreamResponse (Maybe StreamDescription)

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


-- | <b>Amazon DynamoDB</b>
--   
--   Amazon DynamoDB Streams provides API actions for accessing streams and
--   processing stream records. To learn more about application development
--   with Streams, see <a>Capturing Table Activity with DynamoDB
--   Streams</a> in the Amazon DynamoDB Developer Guide.
--   
--   The following are short descriptions of each low-level DynamoDB
--   Streams action:
--   
--   <ul>
--   <li><i>DescribeStream</i> - Returns detailed information about a
--   particular stream.</li>
--   <li><i>GetRecords</i> - Retrieves the stream records from within a
--   shard.</li>
--   <li><i>GetShardIterator</i> - Returns information on how to retrieve
--   the streams record from a shard with a given shard ID.</li>
--   <li><i>ListStreams</i> - Returns a list of all the streams associated
--   with the current AWS account and endpoint.</li>
--   </ul>
module Network.AWS.DynamoDBStreams

-- | API version <tt>2012-08-10</tt> of the Amazon DynamoDB Streams SDK
--   configuration.
dynamoDBStreams :: Service

-- | The shard iterator has expired and can no longer be used to retrieve
--   stream records. A shard iterator expires 15 minutes after it is
--   retrieved using the <i>GetShardIterator</i> action.
_ExpiredIteratorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | An error occurred on the server side.
_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation attempted to read past the oldest stream record in a
--   shard.
--   
--   In DynamoDB Streams, there is a 24 hour limit on data retention.
--   Stream records whose age exceeds this limit are subject to removal
--   (trimming) from the stream. You might receive a
--   TrimmedDataAccessException if:
--   
--   <ul>
--   <li>You request a shard iterator with a sequence number older than the
--   trim point (24 hours).</li>
--   <li>You obtain a shard iterator, but before you use the iterator in a
--   <i>GetRecords</i> request, a stream record in the shard exceeds the 24
--   hour period and is trimmed. This causes the iterator to access a
--   record that no longer exists.</li>
--   </ul>
_TrimmedDataAccessException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation tried to access a nonexistent stream.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your request rate is too high. The AWS SDKs for DynamoDB automatically
--   retry requests that receive this exception. Your request is eventually
--   successful, unless your retry queue is too large to finish. Reduce the
--   frequency of requests and use exponential backoff. For more
--   information, go to <a>Error Retries and Exponential Backoff</a> in the
--   <i>Amazon DynamoDB Developer Guide</i> .
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
data KeyType
Hash :: KeyType
Range :: KeyType
data OperationType
Insert :: OperationType
Modify :: OperationType
Remove :: OperationType
data ShardIteratorType
AfterSequenceNumber :: ShardIteratorType
AtSequenceNumber :: ShardIteratorType
Latest :: ShardIteratorType
TrimHorizon :: ShardIteratorType
data StreamStatus
Disabled :: StreamStatus
Disabling :: StreamStatus
Enabled :: StreamStatus
Enabling :: StreamStatus
data StreamViewType
KeysOnly :: StreamViewType
NewAndOldImages :: StreamViewType
NewImage :: StreamViewType
OldImage :: StreamViewType

-- | Represents the data for an attribute. You can set one, and only one,
--   of the elements.
--   
--   Each attribute in an item is a name-value pair. An attribute can be
--   single-valued or multi-valued set. For example, a book item can have
--   title and authors attributes. Each book has one title but can have
--   many authors. The multi-valued attribute is a set; duplicate values
--   are not allowed.
--   
--   <i>See:</i> <a>attributeValue</a> smart constructor.
data AttributeValue

-- | Creates a value of <a>AttributeValue</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>avL</a> - A List data type.</li>
--   <li><a>avNS</a> - A Number Set data type.</li>
--   <li><a>avM</a> - A Map data type.</li>
--   <li><a>avNULL</a> - A Null data type.</li>
--   <li><a>avN</a> - A Number data type.</li>
--   <li><a>avBS</a> - A Binary Set data type.</li>
--   <li><a>avB</a> - A Binary data type.-- <i>Note:</i> This <tt>Lens</tt>
--   automatically encodes and decodes Base64 data. The underlying
--   isomorphism will encode to Base64 representation during serialisation,
--   and decode from Base64 representation during deserialisation. This
--   <tt>Lens</tt> accepts and returns only raw unencoded data.</li>
--   <li><a>avSS</a> - A String Set data type.</li>
--   <li><a>avS</a> - A String data type.</li>
--   <li><a>avBOOL</a> - A Boolean data type.</li>
--   </ul>
attributeValue :: AttributeValue

-- | A List data type.
avL :: Lens' AttributeValue [AttributeValue]

-- | A Number Set data type.
avNS :: Lens' AttributeValue [Text]

-- | A Map data type.
avM :: Lens' AttributeValue (HashMap Text AttributeValue)

-- | A Null data type.
avNULL :: Lens' AttributeValue (Maybe Bool)

-- | A Number data type.
avN :: Lens' AttributeValue (Maybe Text)

-- | A Binary Set data type.
avBS :: Lens' AttributeValue [ByteString]

-- | A Binary data type.-- <i>Note:</i> This <tt>Lens</tt> automatically
--   encodes and decodes Base64 data. The underlying isomorphism will
--   encode to Base64 representation during serialisation, and decode from
--   Base64 representation during deserialisation. This <tt>Lens</tt>
--   accepts and returns only raw unencoded data.
avB :: Lens' AttributeValue (Maybe ByteString)

-- | A String Set data type.
avSS :: Lens' AttributeValue [Text]

-- | A String data type.
avS :: Lens' AttributeValue (Maybe Text)

-- | A Boolean data type.
avBOOL :: Lens' AttributeValue (Maybe Bool)

-- | Represents <i>a single element</i> of a key schema. A key schema
--   specifies the attributes that make up the primary key of a table, or
--   the key attributes of an index.
--   
--   A <i>KeySchemaElement</i> represents exactly one attribute of the
--   primary key. For example, a simple primary key (partition key) would
--   be represented by one <i>KeySchemaElement</i> . A composite primary
--   key (partition key and sort key) would require one
--   <i>KeySchemaElement</i> for the partition key, and another
--   <i>KeySchemaElement</i> for the sort key.
--   
--   <i>See:</i> <a>keySchemaElement</a> smart constructor.
data KeySchemaElement

-- | Creates a value of <a>KeySchemaElement</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>kseAttributeName</a> - The name of a key attribute.</li>
--   <li><a>kseKeyType</a> - The attribute data, consisting of the data
--   type and the attribute value itself.</li>
--   </ul>
keySchemaElement :: Text -> KeyType -> KeySchemaElement

-- | The name of a key attribute.
kseAttributeName :: Lens' KeySchemaElement Text

-- | The attribute data, consisting of the data type and the attribute
--   value itself.
kseKeyType :: Lens' KeySchemaElement KeyType

-- | A description of a unique event within a stream.
--   
--   <i>See:</i> <a>record</a> smart constructor.
data Record

-- | Creates a value of <a>Record</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>rEventVersion</a> - The version number of the stream record
--   format. This number is updated whenever the structure of <i>Record</i>
--   is modified. Client applications must not assume that
--   <i>eventVersion</i> will remain at a particular value, as this number
--   is subject to change at any time. In general, <i>eventVersion</i> will
--   only increase as the low-level DynamoDB Streams API evolves.</li>
--   <li><a>rDynamodb</a> - The main body of the stream record, containing
--   all of the DynamoDB-specific fields.</li>
--   <li><a>rAwsRegion</a> - The region in which the <i>GetRecords</i>
--   request was received.</li>
--   <li><a>rEventName</a> - The type of data modification that was
--   performed on the DynamoDB table: * <tt>INSERT</tt> - a new item was
--   added to the table. * <tt>MODIFY</tt> - one or more of an existing
--   item's attributes were modified. * <tt>REMOVE</tt> - the item was
--   deleted from the table</li>
--   <li><a>rEventSource</a> - The AWS service from which the stream record
--   originated. For DynamoDB Streams, this is <i>aws:dynamodb</i> .</li>
--   <li><a>rEventId</a> - A globally unique identifier for the event that
--   was recorded in this stream record.</li>
--   </ul>
record :: Record

-- | The version number of the stream record format. This number is updated
--   whenever the structure of <i>Record</i> is modified. Client
--   applications must not assume that <i>eventVersion</i> will remain at a
--   particular value, as this number is subject to change at any time. In
--   general, <i>eventVersion</i> will only increase as the low-level
--   DynamoDB Streams API evolves.
rEventVersion :: Lens' Record (Maybe Text)

-- | The main body of the stream record, containing all of the
--   DynamoDB-specific fields.
rDynamodb :: Lens' Record (Maybe StreamRecord)

-- | The region in which the <i>GetRecords</i> request was received.
rAwsRegion :: Lens' Record (Maybe Text)

-- | The type of data modification that was performed on the DynamoDB
--   table: * <tt>INSERT</tt> - a new item was added to the table. *
--   <tt>MODIFY</tt> - one or more of an existing item's attributes were
--   modified. * <tt>REMOVE</tt> - the item was deleted from the table
rEventName :: Lens' Record (Maybe OperationType)

-- | The AWS service from which the stream record originated. For DynamoDB
--   Streams, this is <i>aws:dynamodb</i> .
rEventSource :: Lens' Record (Maybe Text)

-- | A globally unique identifier for the event that was recorded in this
--   stream record.
rEventId :: Lens' Record (Maybe Text)

-- | The beginning and ending sequence numbers for the stream records
--   contained within a shard.
--   
--   <i>See:</i> <a>sequenceNumberRange</a> smart constructor.
data SequenceNumberRange

-- | Creates a value of <a>SequenceNumberRange</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>snrStartingSequenceNumber</a> - The first sequence number.</li>
--   <li><a>snrEndingSequenceNumber</a> - The last sequence number.</li>
--   </ul>
sequenceNumberRange :: SequenceNumberRange

-- | The first sequence number.
snrStartingSequenceNumber :: Lens' SequenceNumberRange (Maybe Text)

-- | The last sequence number.
snrEndingSequenceNumber :: Lens' SequenceNumberRange (Maybe Text)

-- | A uniquely identified group of stream records within a stream.
--   
--   <i>See:</i> <a>shard</a> smart constructor.
data Shard

-- | Creates a value of <a>Shard</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>sParentShardId</a> - The shard ID of the current shard's
--   parent.</li>
--   <li><a>sSequenceNumberRange</a> - The range of possible sequence
--   numbers for the shard.</li>
--   <li><a>sShardId</a> - The system-generated identifier for this
--   shard.</li>
--   </ul>
shard :: Shard

-- | The shard ID of the current shard's parent.
sParentShardId :: Lens' Shard (Maybe Text)

-- | The range of possible sequence numbers for the shard.
sSequenceNumberRange :: Lens' Shard (Maybe SequenceNumberRange)

-- | The system-generated identifier for this shard.
sShardId :: Lens' Shard (Maybe Text)

-- | Represents all of the data describing a particular stream.
--   
--   <i>See:</i> <a>stream</a> smart constructor.
data Stream

-- | Creates a value of <a>Stream</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>sStreamLabel</a> - A timestamp, in ISO 8601 format, for this
--   stream. Note that <i>LatestStreamLabel</i> is not a unique identifier
--   for the stream, because it is possible that a stream from another
--   table might have the same timestamp. However, the combination of the
--   following three elements is guaranteed to be unique: * the AWS
--   customer ID. * the table name * the <i>StreamLabel</i></li>
--   <li><a>sStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   <li><a>sTableName</a> - The DynamoDB table with which the stream is
--   associated.</li>
--   </ul>
stream :: Stream

-- | A timestamp, in ISO 8601 format, for this stream. Note that
--   <i>LatestStreamLabel</i> is not a unique identifier for the stream,
--   because it is possible that a stream from another table might have the
--   same timestamp. However, the combination of the following three
--   elements is guaranteed to be unique: * the AWS customer ID. * the
--   table name * the <i>StreamLabel</i>
sStreamLabel :: Lens' Stream (Maybe Text)

-- | The Amazon Resource Name (ARN) for the stream.
sStreamARN :: Lens' Stream (Maybe Text)

-- | The DynamoDB table with which the stream is associated.
sTableName :: Lens' Stream (Maybe Text)

-- | Represents all of the data describing a particular stream.
--   
--   <i>See:</i> <a>streamDescription</a> smart constructor.
data StreamDescription

-- | Creates a value of <a>StreamDescription</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>sdLastEvaluatedShardId</a> - The shard ID of the item where the
--   operation stopped, inclusive of the previous result set. Use this
--   value to start a new operation, excluding this value in the new
--   request. If <tt>LastEvaluatedShardId</tt> is empty, then the "last
--   page" of results has been processed and there is currently no more
--   data to be retrieved. If <tt>LastEvaluatedShardId</tt> is not empty,
--   it does not necessarily mean that there is more data in the result
--   set. The only way to know when you have reached the end of the result
--   set is when <tt>LastEvaluatedShardId</tt> is empty.</li>
--   <li><a>sdStreamLabel</a> - A timestamp, in ISO 8601 format, for this
--   stream. Note that <i>LatestStreamLabel</i> is not a unique identifier
--   for the stream, because it is possible that a stream from another
--   table might have the same timestamp. However, the combination of the
--   following three elements is guaranteed to be unique: * the AWS
--   customer ID. * the table name * the <i>StreamLabel</i></li>
--   <li><a>sdStreamStatus</a> - Indicates the current status of the
--   stream: * <tt>ENABLING</tt> - Streams is currently being enabled on
--   the DynamoDB table. * <tt>ENABLED</tt> - the stream is enabled. *
--   <tt>DISABLING</tt> - Streams is currently being disabled on the
--   DynamoDB table. * <tt>DISABLED</tt> - the stream is disabled.</li>
--   <li><a>sdKeySchema</a> - The key attribute(s) of the stream's DynamoDB
--   table.</li>
--   <li><a>sdStreamViewType</a> - Indicates the format of the records
--   within this stream: * <tt>KEYS_ONLY</tt> - only the key attributes of
--   items that were modified in the DynamoDB table. * <tt>NEW_IMAGE</tt> -
--   entire items from the table, as they appeared after they were
--   modified. * <tt>OLD_IMAGE</tt> - entire items from the table, as they
--   appeared before they were modified. * <tt>NEW_AND_OLD_IMAGES</tt> -
--   both the new and the old images of the items from the table.</li>
--   <li><a>sdStreamARN</a> - The Amazon Resource Name (ARN) for the
--   stream.</li>
--   <li><a>sdShards</a> - The shards that comprise the stream.</li>
--   <li><a>sdTableName</a> - The DynamoDB table with which the stream is
--   associated.</li>
--   <li><a>sdCreationRequestDateTime</a> - The date and time when the
--   request to create this stream was issued.</li>
--   </ul>
streamDescription :: StreamDescription

-- | The shard ID of the item where the operation stopped, inclusive of the
--   previous result set. Use this value to start a new operation,
--   excluding this value in the new request. If
--   <tt>LastEvaluatedShardId</tt> is empty, then the "last page" of
--   results has been processed and there is currently no more data to be
--   retrieved. If <tt>LastEvaluatedShardId</tt> is not empty, it does not
--   necessarily mean that there is more data in the result set. The only
--   way to know when you have reached the end of the result set is when
--   <tt>LastEvaluatedShardId</tt> is empty.
sdLastEvaluatedShardId :: Lens' StreamDescription (Maybe Text)

-- | A timestamp, in ISO 8601 format, for this stream. Note that
--   <i>LatestStreamLabel</i> is not a unique identifier for the stream,
--   because it is possible that a stream from another table might have the
--   same timestamp. However, the combination of the following three
--   elements is guaranteed to be unique: * the AWS customer ID. * the
--   table name * the <i>StreamLabel</i>
sdStreamLabel :: Lens' StreamDescription (Maybe Text)

-- | Indicates the current status of the stream: * <tt>ENABLING</tt> -
--   Streams is currently being enabled on the DynamoDB table. *
--   <tt>ENABLED</tt> - the stream is enabled. * <tt>DISABLING</tt> -
--   Streams is currently being disabled on the DynamoDB table. *
--   <tt>DISABLED</tt> - the stream is disabled.
sdStreamStatus :: Lens' StreamDescription (Maybe StreamStatus)

-- | The key attribute(s) of the stream's DynamoDB table.
sdKeySchema :: Lens' StreamDescription (Maybe (NonEmpty KeySchemaElement))

-- | Indicates the format of the records within this stream: *
--   <tt>KEYS_ONLY</tt> - only the key attributes of items that were
--   modified in the DynamoDB table. * <tt>NEW_IMAGE</tt> - entire items
--   from the table, as they appeared after they were modified. *
--   <tt>OLD_IMAGE</tt> - entire items from the table, as they appeared
--   before they were modified. * <tt>NEW_AND_OLD_IMAGES</tt> - both the
--   new and the old images of the items from the table.
sdStreamViewType :: Lens' StreamDescription (Maybe StreamViewType)

-- | The Amazon Resource Name (ARN) for the stream.
sdStreamARN :: Lens' StreamDescription (Maybe Text)

-- | The shards that comprise the stream.
sdShards :: Lens' StreamDescription [Shard]

-- | The DynamoDB table with which the stream is associated.
sdTableName :: Lens' StreamDescription (Maybe Text)

-- | The date and time when the request to create this stream was issued.
sdCreationRequestDateTime :: Lens' StreamDescription (Maybe UTCTime)

-- | A description of a single data modification that was performed on an
--   item in a DynamoDB table.
--   
--   <i>See:</i> <a>streamRecord</a> smart constructor.
data StreamRecord

-- | Creates a value of <a>StreamRecord</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>srSizeBytes</a> - The size of the stream record, in bytes.</li>
--   <li><a>srSequenceNumber</a> - The sequence number of the stream
--   record.</li>
--   <li><a>srApproximateCreationDateTime</a> - The approximate date and
--   time when the stream record was created, in <a>UNIX epoch time</a>
--   format.</li>
--   <li><a>srStreamViewType</a> - The type of data from the modified
--   DynamoDB item that was captured in this stream record: *
--   <tt>KEYS_ONLY</tt> - only the key attributes of the modified item. *
--   <tt>NEW_IMAGE</tt> - the entire item, as it appeared after it was
--   modified. * <tt>OLD_IMAGE</tt> - the entire item, as it appeared
--   before it was modified. * <tt>NEW_AND_OLD_IMAGES</tt> - both the new
--   and the old item images of the item.</li>
--   <li><a>srKeys</a> - The primary key attribute(s) for the DynamoDB item
--   that was modified.</li>
--   <li><a>srOldImage</a> - The item in the DynamoDB table as it appeared
--   before it was modified.</li>
--   <li><a>srNewImage</a> - The item in the DynamoDB table as it appeared
--   after it was modified.</li>
--   </ul>
streamRecord :: StreamRecord

-- | The size of the stream record, in bytes.
srSizeBytes :: Lens' StreamRecord (Maybe Natural)

-- | The sequence number of the stream record.
srSequenceNumber :: Lens' StreamRecord (Maybe Text)

-- | The approximate date and time when the stream record was created, in
--   <a>UNIX epoch time</a> format.
srApproximateCreationDateTime :: Lens' StreamRecord (Maybe UTCTime)

-- | The type of data from the modified DynamoDB item that was captured in
--   this stream record: * <tt>KEYS_ONLY</tt> - only the key attributes of
--   the modified item. * <tt>NEW_IMAGE</tt> - the entire item, as it
--   appeared after it was modified. * <tt>OLD_IMAGE</tt> - the entire
--   item, as it appeared before it was modified. *
--   <tt>NEW_AND_OLD_IMAGES</tt> - both the new and the old item images of
--   the item.
srStreamViewType :: Lens' StreamRecord (Maybe StreamViewType)

-- | The primary key attribute(s) for the DynamoDB item that was modified.
srKeys :: Lens' StreamRecord (HashMap Text AttributeValue)

-- | The item in the DynamoDB table as it appeared before it was modified.
srOldImage :: Lens' StreamRecord (HashMap Text AttributeValue)

-- | The item in the DynamoDB table as it appeared after it was modified.
srNewImage :: Lens' StreamRecord (HashMap Text AttributeValue)
