+# delete shopping list item
+del '/list/:list_id/:item_id' => sub {
+ my $list_id = route_parameters->get('list_id');
+ length($list_id) and $list_id =~ /^\d{1,18}$/
+ or return invalid_input('bad list ID');
+
+ my $item_id = route_parameters->get('item_id');
+ length($item_id) and $item_id =~ /^\d{1,18}$/
+ or return invalid_input('bad item ID');
+
+ my $dbh = get_database;
+
+ my %r = (
+ lists_version => get_lists_version($dbh),
+ );
+
+ my $list = $dbh->resultset('ShoppingList')->find($list_id)
+ or return exception 404, 'No such list';
+
+ my $item = $dbh->resultset('ShoppingListItem')
+ ->find( { shopping_list => $list->id, id => $item_id } );
+
+ if ($item) {
+ $item->delete;
+ $list->update({version => $list->version + 1});
+ }
+
+ $r{list_version} = $list->version;
+
+ return \%r;
+};
+