According to the API docs it only returns a uri when you create a new client, see http://docs.opscode.com/api_chef_server.html#id26

Re Node vs PutNode, Chef rejects the request if it finds keys in the JSON body that it doesn't expect, like automatic. It would work if we can marshall the Node object and remove the extraneous keys.