        :always  (.setKey              (clj-item->db-item prim-kvs))
        :always  (.setAttributeUpdates (attribute-updates update-map))
        expected (.setExpected         (expected-values g))
-       return   (.setReturnValues     (utils/enum g))))))
+       return   (.setReturnValues     (utils/enum g))
+       return-cc? (.setReturnConsumedCapacity (utils/enum :total))))))
 
 (defn delete-item
   "Deletes an item from a table by its primary key.
   See `put-item` for option docs."
-  [creds table prim-kvs & [{:keys [return expected]
+  [creds table prim-kvs & [{:keys [return expected return-cc?]
                             :or   {return :none}}]]
   (as-map
    (.deleteItem (db-client creds)

       :always  (.setTableName    (name table))
       :always  (.setItem         (clj-item->db-item item))
       expected (.setExpected     (expected-values g))
       return   (.setReturnValues (utils/enum g))))))

(defn- attribute-updates
  "{<attr> [<action> <value>] ...} -> {<attr> AttributeValueUpdate ...}"

  For automatic parallelization & segment control see `scan-parallel`.
  For indexed item retrievel see `query`."
  [creds table
   & [{:keys [attr-conds last-prim-kvs return limit total-segments segment
              return-cc?]}]]
  (as-map
   (.scan (db-client creds)
     (doto-maybe (ScanRequest.) g
