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


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 <tt>GetShardIterator</tt> 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
--   <tt>GetRecords</tt> 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)

-- | Contains details about the type of identity that made the request.
--   
--   <i>See:</i> <a>identity</a> smart constructor.
data Identity

-- | Creates a value of <a>Identity</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iPrincipalId</a> - A unique identifier for the entity that made
--   the call. For Time To Live, the principalId is
--   "dynamodb.amazonaws.com".</li>
--   <li><a>iType</a> - The type of the identity. For Time To Live, the
--   type is <a>Service</a>.</li>
--   </ul>
identity :: Identity

-- | A unique identifier for the entity that made the call. For Time To
--   Live, the principalId is "dynamodb.amazonaws.com".
iPrincipalId :: Lens' Identity (Maybe Text)

-- | The type of the identity. For Time To Live, the type is
--   <a>Service</a>.
iType :: Lens' Identity (Maybe Text)

-- | 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 <tt>KeySchemaElement</tt> represents exactly one attribute of the
--   primary key. For example, a simple primary key (partition key) would
--   be represented by one <tt>KeySchemaElement</tt> . A composite primary
--   key (partition key and sort key) would require one
--   <tt>KeySchemaElement</tt> for the partition key, and another
--   <tt>KeySchemaElement</tt> 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>rUserIdentity</a> - Items that are deleted by the Time to Live
--   process after expiration have the following fields: *
--   Records[].userIdentity.type <a>Service</a> *
--   Records[].userIdentity.principalId "dynamodb.amazonaws.com"</li>
--   <li><a>rEventVersion</a> - The version number of the stream record
--   format. This number is updated whenever the structure of
--   <tt>Record</tt> is modified. Client applications must not assume that
--   <tt>eventVersion</tt> will remain at a particular value, as this
--   number is subject to change at any time. In general,
--   <tt>eventVersion</tt> 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 <tt>GetRecords</tt>
--   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 <tt>aws:dynamodb</tt> .</li>
--   <li><a>rEventId</a> - A globally unique identifier for the event that
--   was recorded in this stream record.</li>
--   </ul>
record :: Record

-- | Items that are deleted by the Time to Live process after expiration
--   have the following fields: * Records[].userIdentity.type
--   <a>Service</a> * Records[].userIdentity.principalId
--   "dynamodb.amazonaws.com"
rUserIdentity :: Lens' Record (Maybe Identity)

-- | The version number of the stream record format. This number is updated
--   whenever the structure of <tt>Record</tt> is modified. Client
--   applications must not assume that <tt>eventVersion</tt> will remain at
--   a particular value, as this number is subject to change at any time.
--   In general, <tt>eventVersion</tt> 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 <tt>GetRecords</tt> 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 <tt>aws:dynamodb</tt> .
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 <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt></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
--   <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt>
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 <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt></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
--   <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt>
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)


-- | Returns an array of stream ARNs associated with the current account
--   and endpoint. If the <tt>TableName</tt> parameter is present, then
--   <tt>ListStreams</tt> 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 <tt>ListStreams</tt> 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 <tt>ListStreams</tt> 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 Control.DeepSeq.NFData Network.AWS.DynamoDBStreams.ListStreams.ListStreamsResponse
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


-- | 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 <tt>GetShardIterator</tt> 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 <tt>GetShardIterator</tt> 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 Control.DeepSeq.NFData Network.AWS.DynamoDBStreams.GetShardIterator.GetShardIteratorResponse
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


-- | 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 <tt>GetRecords</tt> 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 <tt>GetRecords</tt> 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 Control.DeepSeq.NFData Network.AWS.DynamoDBStreams.GetRecords.GetRecordsResponse
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


-- | 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 <tt>DescribeStream</tt> 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 <tt>DescribeStream</tt> 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 Control.DeepSeq.NFData Network.AWS.DynamoDBStreams.DescribeStream.DescribeStreamResponse
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


module Network.AWS.DynamoDBStreams.Waiters


-- | <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.
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 <tt>GetShardIterator</tt> 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
--   <tt>GetRecords</tt> 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)

-- | Contains details about the type of identity that made the request.
--   
--   <i>See:</i> <a>identity</a> smart constructor.
data Identity

-- | Creates a value of <a>Identity</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iPrincipalId</a> - A unique identifier for the entity that made
--   the call. For Time To Live, the principalId is
--   "dynamodb.amazonaws.com".</li>
--   <li><a>iType</a> - The type of the identity. For Time To Live, the
--   type is <a>Service</a>.</li>
--   </ul>
identity :: Identity

-- | A unique identifier for the entity that made the call. For Time To
--   Live, the principalId is "dynamodb.amazonaws.com".
iPrincipalId :: Lens' Identity (Maybe Text)

-- | The type of the identity. For Time To Live, the type is
--   <a>Service</a>.
iType :: Lens' Identity (Maybe Text)

-- | 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 <tt>KeySchemaElement</tt> represents exactly one attribute of the
--   primary key. For example, a simple primary key (partition key) would
--   be represented by one <tt>KeySchemaElement</tt> . A composite primary
--   key (partition key and sort key) would require one
--   <tt>KeySchemaElement</tt> for the partition key, and another
--   <tt>KeySchemaElement</tt> 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>rUserIdentity</a> - Items that are deleted by the Time to Live
--   process after expiration have the following fields: *
--   Records[].userIdentity.type <a>Service</a> *
--   Records[].userIdentity.principalId "dynamodb.amazonaws.com"</li>
--   <li><a>rEventVersion</a> - The version number of the stream record
--   format. This number is updated whenever the structure of
--   <tt>Record</tt> is modified. Client applications must not assume that
--   <tt>eventVersion</tt> will remain at a particular value, as this
--   number is subject to change at any time. In general,
--   <tt>eventVersion</tt> 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 <tt>GetRecords</tt>
--   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 <tt>aws:dynamodb</tt> .</li>
--   <li><a>rEventId</a> - A globally unique identifier for the event that
--   was recorded in this stream record.</li>
--   </ul>
record :: Record

-- | Items that are deleted by the Time to Live process after expiration
--   have the following fields: * Records[].userIdentity.type
--   <a>Service</a> * Records[].userIdentity.principalId
--   "dynamodb.amazonaws.com"
rUserIdentity :: Lens' Record (Maybe Identity)

-- | The version number of the stream record format. This number is updated
--   whenever the structure of <tt>Record</tt> is modified. Client
--   applications must not assume that <tt>eventVersion</tt> will remain at
--   a particular value, as this number is subject to change at any time.
--   In general, <tt>eventVersion</tt> 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 <tt>GetRecords</tt> 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 <tt>aws:dynamodb</tt> .
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 <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt></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
--   <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt>
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 <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt></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
--   <tt>LatestStreamLabel</tt> 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 <tt>StreamLabel</tt>
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)
