# File lib/chef_zero/endpoints/rest_object_endpoint.rb, line 20
      def put(request)
        # We grab the old body to trigger a 404 if it doesn't exist
        old_body = get_data(request)
        request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
        key = request_json[identity_key] || request.rest_path[-1]
        # If it's a rename, check for conflict and delete the old value
        rename = key != request.rest_path[-1]
        if rename
          begin
            data_store.create(request.rest_path[0..1] + request.rest_path[2..-2], key, request.body)
          rescue DataStore::DataAlreadyExistsError
            return error(409, "Cannot rename '#{request.rest_path[-1]}' to '#{key}': '#{key}' already exists")
          end
          delete_data(request)
          already_json_response(201, populate_defaults(request, request.body))
        else
          set_data(request, request.rest_path, request.body)
          already_json_response(200, populate_defaults(request, request.body))
        end
      end