@daviddavis I *think* the wrapped parameters in Rails can handle this for you and is something Foreman has enabled but we (Katello) do not. I believe wrap_parameters looks at the DB schema, analyzes the request and creates a wrapped object from them to discern what it thinks are the parameters that match that object. The downside is if there are params that don't correspond to the DB schema although there might be a way around this? It would mean we could avoid the use of a root node on single objects but still have what we expect functionality wise on the Rails side.

In V2, we went down the path of no root node because from our perspective there were two things to consider:

1) It just seemed strange to request an object and get: 
   
    {'repository': 
        { 
            id: 1,
            name: 'foo'
        }
    }

and then to put that resource back to the server. I requested a repository, I know what it is.

2) In our angularjs code, this meant doing strange things like:

    `$scope.repository.repository.name`

Where we are creating a resource called "repository" that stores all attributes or the instance of the object coming from the server. When we put back that object, angular would serialize the JavaScript object and make a PUT back to the server. However, we would have to double namespace so that the request is of the form shown above with the root node. We might could get around this with a transform function.