Affects Version/s: 6.1.0 CE GA1, 6.1.10 EE GA1, 6.2.0 CE M2
The proposal solves the problem of returning different object trees of the same object(s) in single request.
Let's take your example with Users. User object has just contactId, but not the whole Contact object. So, if we need both User and Contact on a page, we need to invoke two services separately. Idea is to have single request that also defines the returned object tree, without the need of additional dummy backend service methods. So with just one call (whatever the syntax is) we would get an User json object that contains a Contact json object inside.
To attend all that requirements we need a more extended syntax.
 Do simple calls to a method.
Or with an optional "name":
 Define a "name" for the request to be possible link them as
parameter values passed to deeper calls:
This call will return the user json with a key called "contact" defined by @contact.
 Filter the keys outputted to the request. Let's say the "user" has a field called "description" that contains 1 MByte of text, we don't need that on the outputted JSON. A whitelist can be passed with the field names to have in the result:
 Allow batching: