anchor.diff:              %% sane. It is very confusing that you can specify bogus values, that look like
               %% they are ignored, but actually end up in the item data.
               ItemDataWithCruft = chef_data_bag_item:add_type_and_bag(DataBagName, ItemData),
  -            Req2 = chef_wm_util:set_json_body(Req1, ItemDataWithCruft),
  -            {true, Req2, State#base_state{log_msg = LogMsg}};
  -        What ->
  -            %% ignore return value of solr delete, this is best effort.
  -            chef_object_db:delete_from_solr(DataBagItem, Darklaunch),
  -            ?BASE_RESOURCE:object_creation_error_hook(DataBagItem, ActorId),
  -            {{halt, 500}, Req, State#base_state{log_msg = What}}
  +            Req1 = chef_wm_util:set_json_body(Req, ItemDataWithCruft),
  +            {true, Req1, NewState};
  +        AnyOtherCase ->
  +            AnyOtherCase
       end.
   
   to_json(Req, State) ->
  
positive.code:     UriMap = [ {Name, RouteFun(Name)}  || Name <- ItemNames ],
      chef_json:encode({UriMap}).
  
  conflict_message(data_bag_item, ItemName, BagName) ->
      Msg = <<"Data Bag Item '", ItemName/binary, "' already exists in Data Bag '",
              BagName/binary, "'.">>,
      {[{<<"error">>, [Msg]}]}.
  
negative.code:                                data_bag_item_name = ItemName}}=State) ->
      {binary_to_list(ItemName), Req, State}.
  
  from_json(Req, #base_state{
                             resource_state = #data_state{data_bag_name = DataBagName,
                                                          data_bag_item_ejson = ItemData}
                            } = State) ->
      case chef_wm_base:create_from_json(Req, State, chef_data_bag_item, {authz_id,undefined}, {DataBagName, ItemData}) of
          {true, _, NewState} = BaseCreateResult ->
              %% The Ruby API returns created items as-is, but with added chef_type and
              %% data_bag fields. If those fields are present in the request, they are put
              %% into the raw item data, but the values are overwritten for the return. When
  