diff --git a/amazonka-dynamodb.cabal b/amazonka-dynamodb.cabal
--- a/amazonka-dynamodb.cabal
+++ b/amazonka-dynamodb.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-dynamodb
-version:               0.3.0
+version:               0.3.1
 synopsis:              Amazon DynamoDB SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -58,5 +58,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.3.0.*
+          amazonka-core == 0.3.1.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/DynamoDB/BatchGetItem.hs b/gen/Network/AWS/DynamoDB/BatchGetItem.hs
--- a/gen/Network/AWS/DynamoDB/BatchGetItem.hs
+++ b/gen/Network/AWS/DynamoDB/BatchGetItem.hs
@@ -121,8 +121,8 @@
 -- /Keys/ - An array of primary key attribute values that define specific items
 -- in the table. For each primary key, you must provide /all/ of the key
 -- attributes. For example, with a hash type primary key, you only need to
--- specify the hash attribute. For a hash-and-range type primary key, you must
--- specify /both/ the hash attribute and the range attribute.
+-- provide the hash attribute. For a hash-and-range type primary key, you must
+-- provide /both/ the hash attribute and the range attribute.
 --
 -- /AttributesToGet/ - One or more attributes to be retrieved from the table.
 -- By default, all attributes are returned. If a specified attribute is not
@@ -167,7 +167,7 @@
     , _bgirConsumedCapacity = mempty
     }
 
--- | The write capacity units consumed by the operation.
+-- | The read capacity units consumed by the operation.
 --
 -- Each element consists of:
 --
@@ -198,7 +198,7 @@
 -- in the table.
 --
 -- /AttributesToGet/ - One or more attributes to be retrieved from the table or
--- index. By default, all attributes are returned. If a specified attribute is
+-- index. By default, all attributes are returned. If a requested attribute is
 -- not found, it does not appear in the result.
 --
 -- /ConsistentRead/ - The consistency of a read operation. If set to 'true', then
diff --git a/gen/Network/AWS/DynamoDB/BatchWriteItem.hs b/gen/Network/AWS/DynamoDB/BatchWriteItem.hs
--- a/gen/Network/AWS/DynamoDB/BatchWriteItem.hs
+++ b/gen/Network/AWS/DynamoDB/BatchWriteItem.hs
@@ -52,18 +52,17 @@
 -- data, such as from Amazon Elastic MapReduce (EMR), or copy data from another
 -- database into DynamoDB. In order to improve performance with these
 -- large-scale operations, /BatchWriteItem/ does not behave in the same way as
--- individual /PutItem/ and /DeleteItem/ calls would For example, you cannot specify
--- conditions on individual put and delete requests, and /BatchWriteItem/ does not
--- return deleted items in the response.
+-- individual /PutItem/ and /DeleteItem/ calls would. For example, you cannot
+-- specify conditions on individual put and delete requests, and /BatchWriteItem/
+-- does not return deleted items in the response.
 --
 -- If you use a programming language that supports concurrency, such as Java,
 -- you can use threads to write items in parallel. Your application must include
 -- the necessary logic to manage the threads. With languages that don't support
--- threading, such as PHP, you must update or delete the specified items one at
--- a time. In both situations, /BatchWriteItem/ provides an alternative where the
--- API performs the specified put and delete operations in parallel, giving you
--- the power of the thread pool approach without having to introduce complexity
--- into your application.
+-- threading, such as PHP, you must update provides an alternative where the API
+-- performs the specified put and delete operations in parallel, giving you the
+-- power of the thread pool approach without having to introduce complexity into
+-- your application.
 --
 -- Parallel processing reduces latency, but each specified put and delete
 -- request consumes the same number of write capacity units whether it is
@@ -148,8 +147,8 @@
 -- /Key/ - A map of primary key attribute values that uniquely identify the !
 -- item. Each entry in this map consists of an attribute name and an attribute
 -- value. For each primary key, you must provide /all/ of the key attributes. For
--- example, with a hash type primary key, you only need to specify the hash
--- attribute. For a hash-and-range type primary key, you must specify /both/ the
+-- example, with a hash type primary key, you only need to provide the hash
+-- attribute. For a hash-and-range type primary key, you must provide /both/ the
 -- hash attribute and the range attribute.
 --
 -- /PutRequest/ - Perform a /PutItem/ operation on the specified item. The item
diff --git a/gen/Network/AWS/DynamoDB/CreateTable.hs b/gen/Network/AWS/DynamoDB/CreateTable.hs
--- a/gen/Network/AWS/DynamoDB/CreateTable.hs
+++ b/gen/Network/AWS/DynamoDB/CreateTable.hs
@@ -134,7 +134,7 @@
 --
 -- /NonKeyAttributes/ - A list of one or more non-key attribute names that
 -- are projected into the secondary index. The total count of attributes
--- specified in /NonKeyAttributes/, summed across all of the secondary indexes,
+-- provided in /NonKeyAttributes/, summed across all of the secondary indexes,
 -- must not exceed 20. If you project the same attribute into two different
 -- indexes, this counts as two distinct attributes when determining the total.
 --
@@ -157,11 +157,11 @@
 --
 -- /KeyType/ - Determines whether the key attribute is 'HASH' or 'RANGE'.
 --
--- For a primary key that consists of a hash attribute, you must specify
+-- For a primary key that consists of a hash attribute, you must provide
 -- exactly one element with a /KeyType/ of 'HASH'.
 --
 -- For a primary key that consists of hash and range attributes, you must
--- specify exactly two elements, in this order: The first element must have a /KeyType/ of 'HASH', and the second element must have a /KeyType/ of 'RANGE'.
+-- provide exactly two elements, in this order: The first element must have a /KeyType/ of 'HASH', and the second element must have a /KeyType/ of 'RANGE'.
 --
 -- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key Specifying the Primary Key> in the /Amazon DynamoDBDeveloper Guide/.
 ctKeySchema :: Lens' CreateTable (NonEmpty KeySchemaElement)
@@ -198,7 +198,7 @@
 --
 -- /NonKeyAttributes/ - A list of one or more non-key attribute names that
 -- are projected into the secondary index. The total count of attributes
--- specified in /NonKeyAttributes/, summed across all of the secondary indexes,
+-- provided in /NonKeyAttributes/, summed across all of the secondary indexes,
 -- must not exceed 20. If you project the same attribute into two different
 -- indexes, this counts as two distinct attributes when determining the total.
 --
diff --git a/gen/Network/AWS/DynamoDB/DeleteItem.hs b/gen/Network/AWS/DynamoDB/DeleteItem.hs
--- a/gen/Network/AWS/DynamoDB/DeleteItem.hs
+++ b/gen/Network/AWS/DynamoDB/DeleteItem.hs
@@ -146,8 +146,6 @@
 -- that if you use /ConditionalOperator/ and / ConditionExpression / at the same
 -- time, DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A logical operator to apply to the conditions in the /Expected/ map:
 --
 -- 'AND' - If all of the conditions evaluate to true, then the entire map
@@ -159,6 +157,9 @@
 -- If you omit /ConditionalOperator/, then 'AND' is the default.
 --
 -- The operation will succeed only if the entire map evaluates to true.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 diConditionalOperator :: Lens' DeleteItem (Maybe ConditionalOperator)
 diConditionalOperator =
     lens _diConditionalOperator (\s a -> s { _diConditionalOperator = a })
@@ -167,8 +168,6 @@
 -- that if you use /Expected/ and / ConditionExpression / at the same time, DynamoDB
 -- will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A map of attribute/condition pairs. /Expected/ provides a conditional block
 -- for the /DeleteItem/ operation.
 --
@@ -199,7 +198,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For type Binary, DynamoDB treats each byte of the binary data as unsigned
--- when it compares binary values, for example when evaluating query expressions.
+-- when it compares binary values.
 --
 -- /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.
 --
@@ -213,7 +212,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
 -- String, Number, Binary, String Set, Number Set, or Binary Set. If an item
--- contains an /AttributeValue/ element of a different type than the one specified
+-- contains an /AttributeValue/ element of a different type than the one provided
 -- in the request, the value does not match. For example, '{"S":"6"}' does not
 -- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
@@ -223,7 +222,7 @@
 -- maps.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one specified in the request, the
+-- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the
 -- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -231,7 +230,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -240,7 +239,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -248,7 +247,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -256,7 +255,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -326,7 +325,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 -- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.
@@ -353,14 +352,16 @@
 -- The /Value/ and /Exists/ parameters are incompatible with /AttributeValueList/
 -- and /ComparisonOperator/. Note that if you use both sets of parameters at once,
 -- DynamoDB will return a /ValidationException/ exception.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 diExpected :: Lens' DeleteItem (HashMap Text ExpectedAttributeValue)
 diExpected = lens _diExpected (\s a -> s { _diExpected = a }) . _Map
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -369,18 +370,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 diExpressionAttributeNames :: Lens' DeleteItem (HashMap Text Text)
 diExpressionAttributeNames =
@@ -414,8 +421,8 @@
 -- key of the item to delete.
 --
 -- For the primary key, you must provide all of the attributes. For example,
--- with a hash type primary key, you only need to specify the hash attribute.
--- For a hash-and-range type primary key, you must specify both the hash
+-- with a hash type primary key, you only need to provide the hash attribute.
+-- For a hash-and-range type primary key, you must provide both the hash
 -- attribute and the range attribute.
 diKey :: Lens' DeleteItem (HashMap Text AttributeValue)
 diKey = lens _diKey (\s a -> s { _diKey = a }) . _Map
diff --git a/gen/Network/AWS/DynamoDB/GetItem.hs b/gen/Network/AWS/DynamoDB/GetItem.hs
--- a/gen/Network/AWS/DynamoDB/GetItem.hs
+++ b/gen/Network/AWS/DynamoDB/GetItem.hs
@@ -105,11 +105,11 @@
 -- that if you use /AttributesToGet/ and /ProjectionExpression/ at the same time,
 -- DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter allows you to retrieve lists or maps; however, it cannot
--- retrieve individual list or map elements.
+-- This parameter allows you to retrieve attributes of type List or Map;
+-- however, it cannot retrieve individual elements within a List or a Map.
 --
 -- The names of one or more attributes to retrieve. If no attribute names are
--- specified, then all attributes will be returned. If any of the requested
+-- provided, then all attributes will be returned. If any of the requested
 -- attributes are not found, they will not appear in the result.
 --
 -- Note that /AttributesToGet/ has no effect on provisioned throughput
@@ -125,11 +125,10 @@
 giConsistentRead :: Lens' GetItem (Maybe Bool)
 giConsistentRead = lens _giConsistentRead (\s a -> s { _giConsistentRead = a })
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -138,18 +137,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 giExpressionAttributeNames :: Lens' GetItem (HashMap Text Text)
 giExpressionAttributeNames =
@@ -161,8 +166,8 @@
 -- key of the item to retrieve.
 --
 -- For the primary key, you must provide all of the attributes. For example,
--- with a hash type primary key, you only need to specify the hash attribute.
--- For a hash-and-range type primary key, you must specify both the hash
+-- with a hash type primary key, you only need to provide the hash attribute.
+-- For a hash-and-range type primary key, you must provide both the hash
 -- attribute and the range attribute.
 giKey :: Lens' GetItem (HashMap Text AttributeValue)
 giKey = lens _giKey (\s a -> s { _giKey = a }) . _Map
@@ -175,7 +180,7 @@
 -- If any of the requested attributes are not found, they will not appear in the
 -- result.
 --
--- For more information on projection expressions, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.
 giProjectionExpression :: Lens' GetItem (Maybe Text)
 giProjectionExpression =
     lens _giProjectionExpression (\s a -> s { _giProjectionExpression = a })
diff --git a/gen/Network/AWS/DynamoDB/PutItem.hs b/gen/Network/AWS/DynamoDB/PutItem.hs
--- a/gen/Network/AWS/DynamoDB/PutItem.hs
+++ b/gen/Network/AWS/DynamoDB/PutItem.hs
@@ -157,8 +157,6 @@
 -- that if you use /ConditionalOperator/ and / ConditionExpression / at the same
 -- time, DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A logical operator to apply to the conditions in the /Expected/ map:
 --
 -- 'AND' - If all of the conditions evaluate to true, then the entire map
@@ -170,6 +168,9 @@
 -- If you omit /ConditionalOperator/, then 'AND' is the default.
 --
 -- The operation will succeed only if the entire map evaluates to true.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 piConditionalOperator :: Lens' PutItem (Maybe ConditionalOperator)
 piConditionalOperator =
     lens _piConditionalOperator (\s a -> s { _piConditionalOperator = a })
@@ -178,11 +179,11 @@
 -- that if you use /Expected/ and / ConditionExpression / at the same time, DynamoDB
 -- will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A map of attribute/condition pairs. /Expected/ provides a conditional block
 -- for the /PutItem/ operation.
 --
+-- This parameter does not support attributes of type List or Map.
+--
 -- Each element of /Expected/ consists of an attribute name, a comparison
 -- operator, and one or more values. DynamoDB compares the attribute with the
 -- value(s) you supplied, using the comparison operator. For each /Expected/
@@ -210,7 +211,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For type Binary, DynamoDB treats each byte of the binary data as unsigned
--- when it compares binary values, for example when evaluating query expressions.
+-- when it compares binary values.
 --
 -- /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.
 --
@@ -224,7 +225,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
 -- String, Number, Binary, String Set, Number Set, or Binary Set. If an item
--- contains an /AttributeValue/ element of a different type than the one specified
+-- contains an /AttributeValue/ element of a different type than the one provided
 -- in the request, the value does not match. For example, '{"S":"6"}' does not
 -- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
@@ -234,7 +235,7 @@
 -- maps.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one specified in the request, the
+-- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the
 -- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -242,7 +243,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -251,7 +252,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -259,7 +260,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -267,7 +268,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -337,7 +338,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 -- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.
@@ -367,11 +368,10 @@
 piExpected :: Lens' PutItem (HashMap Text ExpectedAttributeValue)
 piExpected = lens _piExpected (\s a -> s { _piExpected = a }) . _Map
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -380,18 +380,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 piExpressionAttributeNames :: Lens' PutItem (HashMap Text Text)
 piExpressionAttributeNames =
@@ -426,8 +432,8 @@
 -- name-value pairs for the item.
 --
 -- You must provide all of the attributes for the primary key. For example,
--- with a hash type primary key, you only need to specify the hash attribute.
--- For a hash-and-range type primary key, you must specify both the hash
+-- with a hash type primary key, you only need to provide the hash attribute.
+-- For a hash-and-range type primary key, you must provide both the hash
 -- attribute and the range attribute.
 --
 -- If you specify any attributes that are part of an index key, then the data
diff --git a/gen/Network/AWS/DynamoDB/Query.hs b/gen/Network/AWS/DynamoDB/Query.hs
--- a/gen/Network/AWS/DynamoDB/Query.hs
+++ b/gen/Network/AWS/DynamoDB/Query.hs
@@ -167,11 +167,11 @@
 -- that if you use /AttributesToGet/ and /ProjectionExpression/ at the same time,
 -- DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter allows you to retrieve lists or maps; however, it cannot
--- retrieve individual list or map elements.
+-- This parameter allows you to retrieve attributes of type List or Map;
+-- however, it cannot retrieve individual elements within a List or a Map.
 --
 -- The names of one or more attributes to retrieve. If no attribute names are
--- specified, then all attributes will be returned. If any of the requested
+-- provided, then all attributes will be returned. If any of the requested
 -- attributes are not found, they will not appear in the result.
 --
 -- Note that /AttributesToGet/ has no effect on provisioned throughput
@@ -193,9 +193,7 @@
 qAttributesToGet :: Lens' Query (NonEmpty Text)
 qAttributesToGet = lens _qAttributesToGet (\s a -> s { _qAttributesToGet = a }) . _List1
 
--- | This parameter does not support lists or maps.
---
--- A logical operator to apply to the conditions in the /QueryFilter/ map:
+-- | A logical operator to apply to the conditions in a /QueryFilter/ map:
 --
 -- 'AND' - If all of the conditions evaluate to true, then the entire map
 -- evaluates to true.
@@ -206,6 +204,9 @@
 -- If you omit /ConditionalOperator/, then 'AND' is the default.
 --
 -- The operation will succeed only if the entire map evaluates to true.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 qConditionalOperator :: Lens' Query (Maybe ConditionalOperator)
 qConditionalOperator =
     lens _qConditionalOperator (\s a -> s { _qConditionalOperator = a })
@@ -229,11 +230,10 @@
     lens _qExclusiveStartKey (\s a -> s { _qExclusiveStartKey = a })
         . _Map
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -242,18 +242,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 qExpressionAttributeNames :: Lens' Query (HashMap Text Text)
 qExpressionAttributeNames =
@@ -283,15 +289,14 @@
         (\s a -> s { _qExpressionAttributeValues = a })
             . _Map
 
--- | A condition that evaluates the query results after the items are read and
--- returns only the desired values.
+-- | A string that contains conditions that DynamoDB applies after the /Query/
+-- operation, but before the data is returned to you. Items that do not satisfy
+-- the /FilterExpression/ criteria are not returned.
 --
--- The condition you specify is applied to the items queried; any items that do
--- not match the expression are not returned.
+-- A /FilterExpression/ is applied after the items have already been read; the
+-- process of filtering does not consume any additional read capacity units.
 --
--- Filter expressions are applied after the items are read, so they do not
--- limit the capacity used. A /FilterExpression/ has the same syntax as a /ConditionExpression/. For more information on expression syntax, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions> in
--- the /Amazon DynamoDB Developer Guide/.
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions> in the /Amazon DynamoDBDeveloper Guide/.
 qFilterExpression :: Lens' Query (Maybe Text)
 qFilterExpression =
     lens _qFilterExpression (\s a -> s { _qFilterExpression = a })
@@ -302,17 +307,19 @@
 qIndexName = lens _qIndexName (\s a -> s { _qIndexName = a })
 
 -- | The selection criteria for the query. For a query on a table, you can have
--- conditions only on the table primary key attributes. You must specify the
+-- conditions only on the table primary key attributes. You must provide the
 -- hash key attribute name and value as an 'EQ' condition. You can optionally
--- specify a second condition, referring to the range key attribute.
+-- provide a second condition, referring to the range key attribute.
 --
--- If you do not specify a range key condition, all items under the hash key
--- will be fetched and processed. Any filters will applied after this. For a
--- query on an index, you can have conditions only on the index key attributes.
--- You must specify the index hash attribute name and value as an EQ condition.
--- You can optionally specify a second condition, referring to the index key
--- range attribute.
+-- If you do not provide a range key condition, all of the items that match the
+-- hash key will be retrieved. If a /FilterExpression/ or /QueryFilter/ is present,
+-- it will be applied after the items are retrieved.
 --
+-- For a query on an index, you can have conditions only on the index key
+-- attributes. You must provide the index hash attribute name and value as an EQ
+-- condition. You can optionally provide a second condition, referring to the
+-- index key range attribute.
+--
 -- Each /KeyConditions/ element consists of an attribute name to compare, along
 -- with the following:
 --
@@ -327,7 +334,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For Binary, DynamoDB treats each byte of the binary data as unsigned when it
--- compares binary values, for example when evaluating query expressions.
+-- compares binary values.
 --
 -- /ComparisonOperator/ - A comparator for evaluating attributes, for example,
 -- equals, greater than, less than, and so on.
@@ -350,7 +357,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -359,7 +366,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -367,7 +374,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -375,7 +382,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -394,7 +401,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 -- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.
@@ -421,7 +428,7 @@
 -- If any of the requested attributes are not found, they will not appear in the
 -- result.
 --
--- For more information on projection expressions, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.
 qProjectionExpression :: Lens' Query (Maybe Text)
 qProjectionExpression =
     lens _qProjectionExpression (\s a -> s { _qProjectionExpression = a })
@@ -430,21 +437,23 @@
 -- that if you use /QueryFilter/ and /FilterExpression/ at the same time, DynamoDB
 -- will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A condition that evaluates the query results after the items are read and
 -- returns only the desired values.
 --
--- Query filters are applied after the items are read, so they do not limit the
--- capacity used. If you specify more than one condition in the /QueryFilter/ map,
--- then by default all of the conditions must evaluate to true. In other words,
--- the conditions are ANDed together. (You can use the /ConditionalOperator/
--- parameter to OR the conditions instead. If you do this, then at least one of
--- the conditions must evaluate to true, rather than all of them.)
+-- This parameter does not support attributes of type List or Map.
 --
--- /QueryFilter/ does not allow key attributes. You cannot define a filter
--- condition on a hash key or range key.
+-- A /QueryFilter/ is applied after the items have already been read; the process
+-- of filtering does not consume any additional read capacity units.
 --
+-- If you provide more than one condition in the /QueryFilter/ map, then by
+-- default all of the conditions must evaluate to true. In other words, the
+-- conditions are ANDed together. (You can use the /ConditionalOperator/ parameter
+-- to OR the conditions instead. If you do this, then at least one of the
+-- conditions must evaluate to true, rather than all of them.)
+--
+-- Note that /QueryFilter/ does not allow key attributes. You cannot define a
+-- filter condition on a hash key or range key.
+--
 -- Each /QueryFilter/ element consists of an attribute name to compare, along
 -- with the following:
 --
@@ -459,7 +468,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For type Binary, DynamoDB treats each byte of the binary data as unsigned
--- when it compares binary values, for example when evaluating query expressions.
+-- when it compares binary values.
 --
 -- For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in
 -- the /Amazon DynamoDB Developer Guide/.
@@ -471,8 +480,8 @@
 --
 -- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'
 --
--- For complete descriptions of all comparison operators, see <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html API_Condition.html>
--- .
+-- For complete descriptions of all comparison operators, see the <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html Condition>
+-- data type.
 --
 --
 qQueryFilter :: Lens' Query (HashMap Text Condition)
diff --git a/gen/Network/AWS/DynamoDB/Scan.hs b/gen/Network/AWS/DynamoDB/Scan.hs
--- a/gen/Network/AWS/DynamoDB/Scan.hs
+++ b/gen/Network/AWS/DynamoDB/Scan.hs
@@ -23,8 +23,8 @@
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
 -- | The /Scan/ operation returns one or more items and item attributes by accessing
--- every item in the table. To have DynamoDB return fewer items, you can provide
--- a /ScanFilter/ operation.
+-- every item in a table or a secondary index. To have DynamoDB return fewer
+-- items, you can provide a /ScanFilter/ operation.
 --
 -- If the total number of scanned items exceeds the maximum data set size limit
 -- of 1 MB, the scan stops and results are returned to the user as a /LastEvaluatedKey/ value to continue the scan in a subsequent operation. The results also
@@ -34,9 +34,9 @@
 -- The result set is eventually consistent.
 --
 -- By default, /Scan/ operations proceed sequentially; however, for faster
--- performance on large tables, applications can request a parallel /Scan/
--- operation by specifying the /Segment/ and /TotalSegments/ parameters. For more
--- information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScanParallelScan Parallel Scan> in the /Amazon DynamoDB Developer Guide/.
+-- performance on a large table or secondary index, applications can request a
+-- parallel /Scan/ operation by providing the /Segment/ and /TotalSegments/
+-- parameters. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScanParallelScan Parallel Scan> in the /Amazon DynamoDBDeveloper Guide/.
 --
 -- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html>
 module Network.AWS.DynamoDB.Scan
@@ -52,6 +52,7 @@
     , sExpressionAttributeNames
     , sExpressionAttributeValues
     , sFilterExpression
+    , sIndexName
     , sLimit
     , sProjectionExpression
     , sReturnConsumedCapacity
@@ -85,6 +86,7 @@
     , _sExpressionAttributeNames  :: Map Text Text
     , _sExpressionAttributeValues :: Map Text AttributeValue
     , _sFilterExpression          :: Maybe Text
+    , _sIndexName                 :: Maybe Text
     , _sLimit                     :: Maybe Nat
     , _sProjectionExpression      :: Maybe Text
     , _sReturnConsumedCapacity    :: Maybe ReturnConsumedCapacity
@@ -111,6 +113,8 @@
 --
 -- * 'sFilterExpression' @::@ 'Maybe' 'Text'
 --
+-- * 'sIndexName' @::@ 'Maybe' 'Text'
+--
 -- * 'sLimit' @::@ 'Maybe' 'Natural'
 --
 -- * 'sProjectionExpression' @::@ 'Maybe' 'Text'
@@ -133,6 +137,7 @@
 scan p1 p2 = Scan
     { _sTableName                 = p1
     , _sAttributesToGet           = withIso _List1 (const id) p2
+    , _sIndexName                 = Nothing
     , _sLimit                     = Nothing
     , _sSelect                    = Nothing
     , _sScanFilter                = mempty
@@ -151,11 +156,11 @@
 -- that if you use /AttributesToGet/ and /ProjectionExpression/ at the same time,
 -- DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter allows you to retrieve lists or maps; however, it cannot
--- retrieve individual list or map elements.
+-- This parameter allows you to retrieve attributes of type List or Map;
+-- however, it cannot retrieve individual elements within a List or a Map.
 --
 -- The names of one or more attributes to retrieve. If no attribute names are
--- specified, then all attributes will be returned. If any of the requested
+-- provided, then all attributes will be returned. If any of the requested
 -- attributes are not found, they will not appear in the result.
 --
 -- Note that /AttributesToGet/ has no effect on provisioned throughput
@@ -168,9 +173,7 @@
 -- that if you use /ConditionalOperator/ and / ConditionExpression / at the same
 -- time, DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
--- A logical operator to apply to the conditions in the /ScanFilter/ map:
+-- A logical operator to apply to the conditions in a /ScanFilter/ map:
 --
 -- 'AND' - If all of the conditions evaluate to true, then the entire map
 -- evaluates to true.
@@ -181,6 +184,9 @@
 -- If you omit /ConditionalOperator/, then 'AND' is the default.
 --
 -- The operation will succeed only if the entire map evaluates to true.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 sConditionalOperator :: Lens' Scan (Maybe ConditionalOperator)
 sConditionalOperator =
     lens _sConditionalOperator (\s a -> s { _sConditionalOperator = a })
@@ -199,11 +205,10 @@
     lens _sExclusiveStartKey (\s a -> s { _sExclusiveStartKey = a })
         . _Map
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -212,18 +217,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 sExpressionAttributeNames :: Lens' Scan (HashMap Text Text)
 sExpressionAttributeNames =
@@ -253,15 +264,24 @@
         (\s a -> s { _sExpressionAttributeValues = a })
             . _Map
 
--- | A condition that evaluates the scan results and returns only the desired
--- values.
+-- | A string that contains conditions that DynamoDB applies after the /Scan/
+-- operation, but before the data is returned to you. Items that do not satisfy
+-- the /FilterExpression/ criteria are not returned.
 --
--- The condition you specify is applied to the items scanned; any items that do
--- not match the expression are not returned.
+-- A /FilterExpression/ is applied after the items have already been read; the
+-- process of filtering does not consume any additional read capacity units.
+--
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions> in the /Amazon DynamoDBDeveloper Guide/.
 sFilterExpression :: Lens' Scan (Maybe Text)
 sFilterExpression =
     lens _sFilterExpression (\s a -> s { _sFilterExpression = a })
 
+-- | The name of a secondary index to scan. This index can be any local secondary
+-- index or global secondary index. Note that if you use the 'IndexName'
+-- parameter, you must also provide 'TableName'.
+sIndexName :: Lens' Scan (Maybe Text)
+sIndexName = lens _sIndexName (\s a -> s { _sIndexName = a })
+
 -- | The maximum number of items to evaluate (not necessarily the number of
 -- matching items). If DynamoDB processes the number of items up to the limit
 -- while processing the results, it stops the operation and returns the matching
@@ -274,15 +294,16 @@
 sLimit :: Lens' Scan (Maybe Natural)
 sLimit = lens _sLimit (\s a -> s { _sLimit = a }) . mapping _Nat
 
--- | A string that identifies one or more attributes to retrieve from the table.
--- These attributes can include scalars, sets, or elements of a JSON document.
--- The attributes in the expression must be separated by commas.
+-- | A string that identifies one or more attributes to retrieve from the
+-- specified table or index. These attributes can include scalars, sets, or
+-- elements of a JSON document. The attributes in the expression must be
+-- separated by commas.
 --
 -- If no attribute names are specified, then all attributes will be returned.
 -- If any of the requested attributes are not found, they will not appear in the
 -- result.
 --
--- For more information on projection expressions, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.
 sProjectionExpression :: Lens' Scan (Maybe Text)
 sProjectionExpression =
     lens _sProjectionExpression (\s a -> s { _sProjectionExpression = a })
@@ -295,11 +316,11 @@
 -- that if you use /ScanFilter/ and /FilterExpression/ at the same time, DynamoDB
 -- will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A condition that evaluates the scan results and returns only the desired
 -- values.
 --
+-- This parameter does not support attributes of type List or Map.
+--
 -- If you specify more than one condition in the /ScanFilter/ map, then by
 -- default all of the conditions must evaluate to true. In other words, the
 -- conditions are ANDed together. (You can use the /ConditionalOperator/ parameter
@@ -320,7 +341,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For Binary, DynamoDB treats each byte of the binary data as unsigned when it
--- compares binary values, for example when evaluating query expressions.
+-- compares binary values.
 --
 -- For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in
 -- the /Amazon DynamoDB Developer Guide/.
@@ -342,8 +363,9 @@
 -- scanned by an application worker.
 --
 -- Segment IDs are zero-based, so the first segment is always 0. For example,
--- if you want to scan a table using four application threads, the first thread
--- specifies a /Segment/ value of 0, the second thread specifies 1, and so on.
+-- if you want to use four application threads to scan a table or an index, then
+-- the first thread specifies a /Segment/ value of 0, the second thread specifies
+-- 1, and so on.
 --
 -- The value of /LastEvaluatedKey/ returned from a parallel /Scan/ request must be
 -- used as /ExclusiveStartKey/ with the same segment ID in a subsequent /Scan/
@@ -352,7 +374,7 @@
 -- The value for /Segment/ must be greater than or equal to 0, and less than the
 -- value provided for /TotalSegments/.
 --
--- If you specify /Segment/, you must also specify /TotalSegments/.
+-- If you provide /Segment/, you must also provide /TotalSegments/.
 sSegment :: Lens' Scan (Maybe Natural)
 sSegment = lens _sSegment (\s a -> s { _sSegment = a }) . mapping _Nat
 
@@ -373,14 +395,14 @@
 sSelect :: Lens' Scan (Maybe Select)
 sSelect = lens _sSelect (\s a -> s { _sSelect = a })
 
--- | The name of the table containing the requested items.
+-- | The name of the table containing the requested items; or, if you provide 'IndexName', the name of the table to which that index belongs.
 sTableName :: Lens' Scan Text
 sTableName = lens _sTableName (\s a -> s { _sTableName = a })
 
 -- | For a parallel /Scan/ request, /TotalSegments/ represents the total number of
 -- segments into which the /Scan/ operation will be divided. The value of /TotalSegments/ corresponds to the number of application workers that will perform the
--- parallel scan. For example, if you want to scan a table using four
--- application threads, specify a /TotalSegments/ value of 4.
+-- parallel scan. For example, if you want to use four application threads to
+-- scan a table or an index, specify a /TotalSegments/ value of 4.
 --
 -- The value for /TotalSegments/ must be greater than or equal to 1, and less
 -- than or equal to 1000000. If you specify a /TotalSegments/ value of 1, the /Scan/
@@ -473,6 +495,7 @@
 instance ToJSON Scan where
     toJSON Scan{..} = object
         [ "TableName"                 .= _sTableName
+        , "IndexName"                 .= _sIndexName
         , "AttributesToGet"           .= _sAttributesToGet
         , "Limit"                     .= _sLimit
         , "Select"                    .= _sSelect
diff --git a/gen/Network/AWS/DynamoDB/Types.hs b/gen/Network/AWS/DynamoDB/Types.hs
--- a/gen/Network/AWS/DynamoDB/Types.hs
+++ b/gen/Network/AWS/DynamoDB/Types.hs
@@ -844,7 +844,7 @@
 --
 -- /NonKeyAttributes/ - A list of one or more non-key attribute names that
 -- are projected into the secondary index. The total count of attributes
--- specified in /NonKeyAttributes/, summed across all of the secondary indexes,
+-- provided in /NonKeyAttributes/, summed across all of the secondary indexes,
 -- must not exceed 20. If you project the same attribute into two different
 -- indexes, this counts as two distinct attributes when determining the total.
 --
@@ -904,7 +904,7 @@
 --
 -- /NonKeyAttributes/ - A list of one or more non-key attribute names that
 -- are projected into the secondary index. The total count of attributes
--- specified in /NonKeyAttributes/, summed across all of the secondary indexes,
+-- provided in /NonKeyAttributes/, summed across all of the secondary indexes,
 -- must not exceed 20. If you project the same attribute into two different
 -- indexes, this counts as two distinct attributes when determining the total.
 --
@@ -941,14 +941,11 @@
 
 -- | The current state of the table:
 --
--- /CREATING/ - The table is being created, as the result of a /CreateTable/
--- operation.
+-- /CREATING/ - The table is being created.
 --
--- /UPDATING/ - The table is being updated, as the result of an /UpdateTable/
--- operation.
+-- /UPDATING/ - The table is being updated.
 --
--- /DELETING/ - The table is being deleted, as the result of a /DeleteTable/
--- operation.
+-- /DELETING/ - The table is being deleted.
 --
 -- /ACTIVE/ - The table is ready for use.
 --
@@ -1030,11 +1027,10 @@
 kaaConsistentRead =
     lens _kaaConsistentRead (\s a -> s { _kaaConsistentRead = a })
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -1043,18 +1039,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 kaaExpressionAttributeNames :: Lens' KeysAndAttributes (HashMap Text Text)
 kaaExpressionAttributeNames =
@@ -1069,13 +1071,13 @@
 
 -- | A string that identifies one or more attributes to retrieve from the table.
 -- These attributes can include scalars, sets, or elements of a JSON document.
--- The attributes in the expression must be separated by commas.
+-- The attributes in the /ProjectionExpression/ must be separated by commas.
 --
 -- If no attribute names are specified, then all attributes will be returned.
 -- If any of the requested attributes are not found, they will not appear in the
 -- result.
 --
--- For more information on projection expressions, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
+-- For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.
 kaaProjectionExpression :: Lens' KeysAndAttributes (Maybe Text)
 kaaProjectionExpression =
     lens _kaaProjectionExpression (\s a -> s { _kaaProjectionExpression = a })
@@ -1293,7 +1295,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For Binary, DynamoDB treats each byte of the binary data as unsigned when it
--- compares binary values, for example when evaluating query expressions.
+-- compares binary values.
 --
 -- For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in
 -- the /Amazon DynamoDB Developer Guide/.
@@ -1315,7 +1317,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
 -- String, Number, Binary, String Set, Number Set, or Binary Set. If an item
--- contains an /AttributeValue/ element of a different type than the one specified
+-- contains an /AttributeValue/ element of a different type than the one provided
 -- in the request, the value does not match. For example, '{"S":"6"}' does not
 -- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
@@ -1325,7 +1327,7 @@
 -- maps.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one specified in the request, the
+-- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the
 -- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -1333,7 +1335,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -1342,7 +1344,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -1350,7 +1352,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -1358,7 +1360,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -1428,7 +1430,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 --
@@ -1457,7 +1459,7 @@
 -- /Exists/ is 'true' but there is no /Value/ to check. (You expect a value to
 -- exist, but don't specify what that value is.)
 --
--- /Exists/ is 'false' but you also specify a /Value/. (You cannot expect an
+-- /Exists/ is 'false' but you also provide a /Value/. (You cannot expect an
 -- attribute to have a value, while also expecting it not to exist.)
 --
 --
@@ -1744,11 +1746,11 @@
 
 -- | The current state of the global secondary index:
 --
--- /CREATING/ - The index is being created, as the result of a /CreateTable/ or /UpdateTable/ operation.
+-- /CREATING/ - The index is being created.
 --
--- /UPDATING/ - The index is being updated, as the result of a /CreateTable/ or /UpdateTable/ operation.
+-- /UPDATING/ - The index is being updated.
 --
--- /DELETING/ - The index is being deleted, as the result of an /UpdateTable/ or /DeleteTable/ operation.
+-- /DELETING/ - The index is being deleted.
 --
 -- /ACTIVE/ - The index is ready for use.
 --
@@ -2509,7 +2511,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For Binary, DynamoDB treats each byte of the binary data as unsigned when it
--- compares binary values, for example when evaluating query expressions.
+-- compares binary values.
 cAttributeValueList :: Lens' Condition [AttributeValue]
 cAttributeValueList =
     lens _cAttributeValueList (\s a -> s { _cAttributeValueList = a })
@@ -2528,7 +2530,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
 -- String, Number, Binary, String Set, Number Set, or Binary Set. If an item
--- contains an /AttributeValue/ element of a different type than the one specified
+-- contains an /AttributeValue/ element of a different type than the one provided
 -- in the request, the value does not match. For example, '{"S":"6"}' does not
 -- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
@@ -2538,7 +2540,7 @@
 -- maps.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one specified in the request, the
+-- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the
 -- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -2546,7 +2548,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -2555,7 +2557,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -2563,7 +2565,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -2571,7 +2573,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -2641,7 +2643,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 -- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.
diff --git a/gen/Network/AWS/DynamoDB/UpdateItem.hs b/gen/Network/AWS/DynamoDB/UpdateItem.hs
--- a/gen/Network/AWS/DynamoDB/UpdateItem.hs
+++ b/gen/Network/AWS/DynamoDB/UpdateItem.hs
@@ -24,9 +24,11 @@
 
 -- | Edits an existing item's attributes, or adds a new item to the table if it
 -- does not already exist. You can put, delete, or add attribute values. You can
--- also perform a conditional update (insert a new attribute name-value pair if
--- it doesn't exist, or replace an existing name-value pair if it has certain
--- expected attribute values).
+-- also perform a conditional update on an existing item (insert a new attribute
+-- name-value pair if it doesn't exist, or replace an existing name-value pair
+-- if it has certain expected attribute values). If conditions are specified and
+-- the item does not exist, then the operation fails and a new item is not
+-- created.
 --
 -- You can also return the item's attribute values in the same /UpdateItem/
 -- operation using the /ReturnValues/ parameter.
@@ -206,7 +208,7 @@
 -- number (or set of numbers) for the attribute value. The only data types
 -- allowed are Number and Number Set.
 --
--- If you specify any attributes that are part of an index key, then the
+-- If you provide any attributes that are part of an index key, then the
 -- data types for those attributes must match those of the schema in the table's
 -- attribute definition.
 uiAttributeUpdates :: Lens' UpdateItem (HashMap Text AttributeValueUpdate)
@@ -237,8 +239,6 @@
 -- that if you use /ConditionalOperator/ and / ConditionExpression / at the same
 -- time, DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A logical operator to apply to the conditions in the /Expected/ map:
 --
 -- 'AND' - If all of the conditions evaluate to true, then the entire map
@@ -250,6 +250,9 @@
 -- If you omit /ConditionalOperator/, then 'AND' is the default.
 --
 -- The operation will succeed only if the entire map evaluates to true.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 uiConditionalOperator :: Lens' UpdateItem (Maybe ConditionalOperator)
 uiConditionalOperator =
     lens _uiConditionalOperator (\s a -> s { _uiConditionalOperator = a })
@@ -258,8 +261,6 @@
 -- Note that if you use /Expected/ and / ConditionExpression / at the same time,
 -- DynamoDB will return a /ValidationException/ exception.
 --
--- This parameter does not support lists or maps.
---
 -- A map of attribute/condition pairs. /Expected/ provides a conditional block
 -- for the /UpdateItem/ operation.
 --
@@ -290,7 +291,7 @@
 -- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.
 --
 -- For type Binary, DynamoDB treats each byte of the binary data as unsigned
--- when it compares binary values, for example when evaluating query expressions.
+-- when it compares binary values.
 --
 -- /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.
 --
@@ -304,7 +305,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
 -- String, Number, Binary, String Set, Number Set, or Binary Set. If an item
--- contains an /AttributeValue/ element of a different type than the one specified
+-- contains an /AttributeValue/ element of a different type than the one provided
 -- in the request, the value does not match. For example, '{"S":"6"}' does not
 -- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
@@ -314,7 +315,7 @@
 -- maps.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one specified in the request, the
+-- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the
 -- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -322,7 +323,7 @@
 -- 'LE' : Less than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -331,7 +332,7 @@
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ of type String,
 -- Number, or Binary (not a set type). If an item contains an /AttributeValue/
--- element of a different type than the one specified in the request, the value
+-- element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -339,7 +340,7 @@
 -- 'GE' : Greater than or equal.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -347,7 +348,7 @@
 -- 'GT' : Greater than.
 --
 -- /AttributeValueList/ can contain only one /AttributeValue/ element of type
--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.
 --
 --
@@ -417,7 +418,7 @@
 -- /AttributeValueList/ must contain two /AttributeValue/ elements of the same
 -- type, either String, Number, or Binary (not a set type). A target attribute
 -- matches if the target value is greater than, or equal to, the first element
--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one specified in the request, the value
+-- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value
 -- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'
 --
 -- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.
@@ -444,14 +445,16 @@
 -- The /Value/ and /Exists/ parameters are incompatible with /AttributeValueList/
 -- and /ComparisonOperator/. Note that if you use both sets of parameters at once,
 -- DynamoDB will return a /ValidationException/ exception.
+--
+-- This parameter does not support attributes of type List or Map.
+--
 uiExpected :: Lens' UpdateItem (HashMap Text ExpectedAttributeValue)
 uiExpected = lens _uiExpected (\s a -> s { _uiExpected = a }) . _Map
 
--- | One or more substitution tokens for simplifying complex expressions. The
+-- | One or more substitution tokens for attribute names in an expression. The
 -- following are some use cases for using /ExpressionAttributeNames/:
 --
--- To shorten an attribute name that is very long or unwieldy in an
--- expression.
+-- To access an attribute whose name conflicts with a DynamoDB reserved word.
 --
 -- To create a placeholder for repeating occurrences of an attribute name in
 -- an expression.
@@ -460,18 +463,24 @@
 -- misinterpreted in an expression.
 --
 -- Use the # character in an expression to dereference an attribute name. For
--- example, consider the following expression:
+-- example, consider the following attribute name:
 --
--- 'order.customerInfo.LastName = "Smith" OR order.customerInfo.LastName ="Jones"'
+-- 'Percentile'
 --
--- Now suppose that you specified the following for /ExpressionAttributeNames/:
+-- The name of this attribute conflicts with a reserved word, so it cannot be
+-- used directly in an expression. (For the complete list of reserved words, go
+-- to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around
+-- this, you could specify the following for /ExpressionAttributeNames/:
 --
--- '{"#name":"order.customerInfo.LastName"}'
+-- '{"#P":"Percentile"}'
 --
--- The expression can now be simplified as follows:
+-- You could then use this substitution in an expression, as in this example:
 --
--- '#name = "Smith" OR #name = "Jones"'
+-- '#P = :val'
 --
+-- Tokens that begin with the : character are /expression attribute values/,
+-- which are placeholders for the actual value at runtime.
+--
 -- For more information on expression attribute names, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.
 uiExpressionAttributeNames :: Lens' UpdateItem (HashMap Text Text)
 uiExpressionAttributeNames =
@@ -505,8 +514,8 @@
 -- attribute name and a value for that attribute.
 --
 -- For the primary key, you must provide all of the attributes. For example,
--- with a hash type primary key, you only need to specify the hash attribute.
--- For a hash-and-range type primary key, you must specify both the hash
+-- with a hash type primary key, you only need to provide the hash attribute.
+-- For a hash-and-range type primary key, you must provide both the hash
 -- attribute and the range attribute.
 uiKey :: Lens' UpdateItem (HashMap Text AttributeValue)
 uiKey = lens _uiKey (\s a -> s { _uiKey = a }) . _Map
diff --git a/gen/Network/AWS/DynamoDB/UpdateTable.hs b/gen/Network/AWS/DynamoDB/UpdateTable.hs
--- a/gen/Network/AWS/DynamoDB/UpdateTable.hs
+++ b/gen/Network/AWS/DynamoDB/UpdateTable.hs
@@ -99,7 +99,7 @@
         . _List
 
 -- | An array of one or more global secondary indexes for the table. For each
--- index in the array, you can specify one action:
+-- index in the array, you can request one action:
 --
 -- /Create/ - add a new global secondary index to the table.
 --
