diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.3`
+`1.4.4`
 
 
 ## Description
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:               1.4.3
+version:               1.4.4
 synopsis:              Amazon DynamoDB SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -11,7 +11,7 @@
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
     Amazon DynamoDB
 
@@ -117,7 +117,7 @@
         , Network.AWS.DynamoDB.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.3.*
+          amazonka-core == 1.4.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-dynamodb-test
@@ -137,9 +137,9 @@
         , Test.AWS.DynamoDB.Internal
 
     build-depends:
-          amazonka-core == 1.4.3.*
-        , amazonka-test == 1.4.3.*
-        , amazonka-dynamodb == 1.4.3.*
+          amazonka-core == 1.4.4.*
+        , amazonka-test == 1.4.4.*
+        , amazonka-dynamodb == 1.4.4.*
         , base
         , bytestring
         , tasty
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
@@ -36,7 +36,7 @@
 --
 -- In order to minimize response latency, /BatchGetItem/ retrieves items in parallel.
 --
--- When designing your application, keep in mind that DynamoDB does not return attributes in any particular order. To help parse the response by item, include the primary key values for the items in your request in the /AttributesToGet/ parameter.
+-- When designing your application, keep in mind that DynamoDB does not return items in any particular order. To help parse the response by item, include the primary key values for the items in your request in the /AttributesToGet/ parameter.
 --
 -- If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations Capacity Units Calculations> in the /Amazon DynamoDB Developer Guide/.
 module Network.AWS.DynamoDB.BatchGetItem
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
@@ -147,6 +147,7 @@
 --
 -- -   'ALL_OLD' - The content of the old item is returned.
 --
+-- The /ReturnValues/ parameter is used by several DynamoDB operations; however, /DeleteItem/ does not recognize any values other than 'NONE' or 'ALL_OLD'.
 diReturnValues :: Lens' DeleteItem (Maybe ReturnValue)
 diReturnValues = lens _diReturnValues (\ s a -> s{_diReturnValues = a});
 
diff --git a/gen/Network/AWS/DynamoDB/DescribeLimits.hs b/gen/Network/AWS/DynamoDB/DescribeLimits.hs
--- a/gen/Network/AWS/DynamoDB/DescribeLimits.hs
+++ b/gen/Network/AWS/DynamoDB/DescribeLimits.hs
@@ -27,12 +27,17 @@
 -- For example, you could use one of the AWS SDKs to do the following:
 --
 -- 1.  Call /DescribeLimits/ for a particular region to obtain your current account limits on provisioned capacity there.
+--
 -- 2.  Create a variable to hold the aggregate read capacity units provisioned for all your tables in that region, and one to hold the aggregate write capacity units. Zero them both.
+--
 -- 3.  Call /ListTables/ to obtain a list of all your DynamoDB tables.
+--
 -- 4.  For each table name listed by /ListTables/, do the following:
 --
 --     -   Call /DescribeTable/ with the table name.
+--
 --     -   Use the data returned by /DescribeTable/ to add the read capacity units and write capacity units provisioned for the table itself to your variables.
+--
 --     -   If the table has one or more global secondary indexes (GSIs), loop over these GSIs and add their provisioned capacity values to your variables as well.
 --
 -- 5.  Report the account limits for that region returned by /DescribeLimits/, along with the total current provisioned capacity levels you have calculated.
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
@@ -151,6 +151,7 @@
 --
 -- -   'ALL_OLD' - If /PutItem/ overwrote an attribute name-value pair, then the content of the old item is returned.
 --
+-- The /ReturnValues/ parameter is used by several DynamoDB operations; however, /PutItem/ does not recognize any values other than 'NONE' or 'ALL_OLD'.
 piReturnValues :: Lens' PutItem (Maybe ReturnValue)
 piReturnValues = lens _piReturnValues (\ s a -> s{_piReturnValues = a});
 
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
@@ -24,7 +24,7 @@
 --
 -- Queries that do not return results consume the minimum number of read capacity units for that type of read operation.
 --
--- If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with the /LastEvaluatedKey/ element to continue the query in a subsequent operation. Unlike a /Scan/ operation, a /Query/ operation never returns both an empty result set and a /LastEvaluatedKey/ value. /LastEvaluatedKey/ is only provided if the results exceed 1 MB, or if you have used the /Limit/ parameter.
+-- If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with the /LastEvaluatedKey/ element to continue the query in a subsequent operation. Unlike a /Scan/ operation, a /Query/ operation never returns both an empty result set and a /LastEvaluatedKey/ value. /LastEvaluatedKey/ is only provided if you have used the /Limit/ parameter, or if the result set exceeds 1 MB (prior to applying a filter).
 --
 -- You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set the /ConsistentRead/ parameter to 'true' and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify /ConsistentRead/ when querying a global secondary index.
 --
@@ -388,17 +388,17 @@
 --
 -- -   'sortKeyName' /=/ ':sortkeyval' - true if the sort key value is equal to ':sortkeyval'.
 --
--- -   'sortKeyName' /&#x3C;/ ':sortkeyval' - true if the sort key value is less than ':sortkeyval'.
+-- -   'sortKeyName' /\</ ':sortkeyval' - true if the sort key value is less than ':sortkeyval'.
 --
--- -   'sortKeyName' /&#x3C;=/ ':sortkeyval' - true if the sort key value is less than or equal to ':sortkeyval'.
+-- -   'sortKeyName' /\<=/ ':sortkeyval' - true if the sort key value is less than or equal to ':sortkeyval'.
 --
--- -   'sortKeyName' /&#x3E;/ ':sortkeyval' - true if the sort key value is greater than ':sortkeyval'.
+-- -   'sortKeyName' />/ ':sortkeyval' - true if the sort key value is greater than ':sortkeyval'.
 --
--- -   'sortKeyName' /&#x3E;=/ ':sortkeyval' - true if the sort key value is greater than or equal to ':sortkeyval'.
+-- -   'sortKeyName' />=/ ':sortkeyval' - true if the sort key value is greater than or equal to ':sortkeyval'.
 --
 -- -   'sortKeyName' /BETWEEN/ ':sortkeyval1' /AND/ ':sortkeyval2' - true if the sort key value is greater than or equal to ':sortkeyval1', and less than or equal to ':sortkeyval2'.
 --
--- -   /begins_with (/'sortKeyName', ':sortkeyval'/)/ - true if the sort key value begins with a particular operand. (You cannot use this function with a sort key that is of type Number.) Note that the function name 'begins_with' is case-sensitive.
+-- -   /begins_with (/ 'sortKeyName', ':sortkeyval' /)/ - true if the sort key value begins with a particular operand. (You cannot use this function with a sort key that is of type Number.) Note that the function name 'begins_with' is case-sensitive.
 --
 -- Use the /ExpressionAttributeValues/ parameter to replace tokens such as ':partitionval' and ':sortval' with actual values at runtime.
 --
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
@@ -287,6 +287,8 @@
 --
 -- -   'ALL_ATTRIBUTES' - Returns all of the item attributes.
 --
+-- -   'ALL_PROJECTED_ATTRIBUTES' - Allowed only when querying an index. Retrieves all attributes that have been projected into the index. If the index is configured to project all attributes, this return value is equivalent to specifying 'ALL_ATTRIBUTES'.
+--
 -- -   'COUNT' - Returns the number of matching items, rather than the matching items themselves.
 --
 -- -   'SPECIFIC_ATTRIBUTES' - Returns only the attributes listed in /AttributesToGet/. This return value is equivalent to specifying /AttributesToGet/ without specifying any value for /Select/.
diff --git a/gen/Network/AWS/DynamoDB/Types/Product.hs b/gen/Network/AWS/DynamoDB/Types/Product.hs
--- a/gen/Network/AWS/DynamoDB/Types/Product.hs
+++ b/gen/Network/AWS/DynamoDB/Types/Product.hs
@@ -53,8 +53,11 @@
 -- | The data type for the attribute, where:
 --
 -- -   'S' - the attribute is of type String
+--
 -- -   'N' - the attribute is of type Number
+--
 -- -   'B' - the attribute is of type Binary
+--
 adAttributeType :: Lens' AttributeDefinition ScalarAttributeType
 adAttributeType = lens _adAttributeType (\ s a -> s{_adAttributeType = a});
 
@@ -1827,8 +1830,6 @@
 -- -   /AttributeName/ - The name of the attribute.
 --
 -- -   /KeyType/ - The role of the attribute:
---
---     .
 --
 --     -   'HASH' - partition key
 --
diff --git a/gen/Network/AWS/DynamoDB/Types/Sum.hs b/gen/Network/AWS/DynamoDB/Types/Sum.hs
--- a/gen/Network/AWS/DynamoDB/Types/Sum.hs
+++ b/gen/Network/AWS/DynamoDB/Types/Sum.hs
@@ -31,7 +31,7 @@
         "delete" -> pure Delete
         "put" -> pure Put
         e -> fromTextError $ "Failure parsing AttributeAction from value: '" <> e
-           <> "'. Accepted values: ADD, DELETE, PUT"
+           <> "'. Accepted values: add, delete, put"
 
 instance ToText AttributeAction where
     toText = \case
@@ -80,7 +80,7 @@
         "not_null" -> pure NotNull
         "null" -> pure Null
         e -> fromTextError $ "Failure parsing ComparisonOperator from value: '" <> e
-           <> "'. Accepted values: BEGINS_WITH, BETWEEN, CONTAINS, EQ, GE, GT, IN, LE, LT, NE, NOT_CONTAINS, NOT_NULL, NULL"
+           <> "'. Accepted values: begins_with, between, contains, eq, ge, gt, in, le, lt, ne, not_contains, not_null, null"
 
 instance ToText ComparisonOperator where
     toText = \case
@@ -117,7 +117,7 @@
         "and" -> pure And
         "or" -> pure OR
         e -> fromTextError $ "Failure parsing ConditionalOperator from value: '" <> e
-           <> "'. Accepted values: AND, OR"
+           <> "'. Accepted values: and, or"
 
 instance ToText ConditionalOperator where
     toText = \case
@@ -147,7 +147,7 @@
         "deleting" -> pure ISDeleting
         "updating" -> pure ISUpdating
         e -> fromTextError $ "Failure parsing IndexStatus from value: '" <> e
-           <> "'. Accepted values: ACTIVE, CREATING, DELETING, UPDATING"
+           <> "'. Accepted values: active, creating, deleting, updating"
 
 instance ToText IndexStatus where
     toText = \case
@@ -175,7 +175,7 @@
         "hash" -> pure Hash
         "range" -> pure Range
         e -> fromTextError $ "Failure parsing KeyType from value: '" <> e
-           <> "'. Accepted values: HASH, RANGE"
+           <> "'. Accepted values: hash, range"
 
 instance ToText KeyType where
     toText = \case
@@ -206,7 +206,7 @@
         "include" -> pure Include
         "keys_only" -> pure KeysOnly
         e -> fromTextError $ "Failure parsing ProjectionType from value: '" <> e
-           <> "'. Accepted values: ALL, INCLUDE, KEYS_ONLY"
+           <> "'. Accepted values: all, include, keys_only"
 
 instance ToText ProjectionType where
     toText = \case
@@ -248,7 +248,7 @@
         "none" -> pure RCCNone
         "total" -> pure RCCTotal
         e -> fromTextError $ "Failure parsing ReturnConsumedCapacity from value: '" <> e
-           <> "'. Accepted values: INDEXES, NONE, TOTAL"
+           <> "'. Accepted values: indexes, none, total"
 
 instance ToText ReturnConsumedCapacity where
     toText = \case
@@ -275,7 +275,7 @@
         "none" -> pure RICMNone
         "size" -> pure RICMSize
         e -> fromTextError $ "Failure parsing ReturnItemCollectionMetrics from value: '" <> e
-           <> "'. Accepted values: NONE, SIZE"
+           <> "'. Accepted values: none, size"
 
 instance ToText ReturnItemCollectionMetrics where
     toText = \case
@@ -307,7 +307,7 @@
         "updated_new" -> pure UpdatedNew
         "updated_old" -> pure UpdatedOld
         e -> fromTextError $ "Failure parsing ReturnValue from value: '" <> e
-           <> "'. Accepted values: ALL_NEW, ALL_OLD, NONE, UPDATED_NEW, UPDATED_OLD"
+           <> "'. Accepted values: all_new, all_old, none, updated_new, updated_old"
 
 instance ToText ReturnValue where
     toText = \case
@@ -338,7 +338,7 @@
         "n" -> pure N
         "s" -> pure S
         e -> fromTextError $ "Failure parsing ScalarAttributeType from value: '" <> e
-           <> "'. Accepted values: B, N, S"
+           <> "'. Accepted values: b, n, s"
 
 instance ToText ScalarAttributeType where
     toText = \case
@@ -372,7 +372,7 @@
         "count" -> pure Count
         "specific_attributes" -> pure SpecificAttributes
         e -> fromTextError $ "Failure parsing Select from value: '" <> e
-           <> "'. Accepted values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, COUNT, SPECIFIC_ATTRIBUTES"
+           <> "'. Accepted values: all_attributes, all_projected_attributes, count, specific_attributes"
 
 instance ToText Select where
     toText = \case
@@ -404,7 +404,7 @@
         "new_image" -> pure SVTNewImage
         "old_image" -> pure SVTOldImage
         e -> fromTextError $ "Failure parsing StreamViewType from value: '" <> e
-           <> "'. Accepted values: KEYS_ONLY, NEW_AND_OLD_IMAGES, NEW_IMAGE, OLD_IMAGE"
+           <> "'. Accepted values: keys_only, new_and_old_images, new_image, old_image"
 
 instance ToText StreamViewType where
     toText = \case
@@ -439,7 +439,7 @@
         "deleting" -> pure Deleting
         "updating" -> pure Updating
         e -> fromTextError $ "Failure parsing TableStatus from value: '" <> e
-           <> "'. Accepted values: ACTIVE, CREATING, DELETING, UPDATING"
+           <> "'. Accepted values: active, creating, deleting, updating"
 
 instance ToText TableStatus where
     toText = \case
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
