Maybe I'm misunderstanding your scenario, but from the examples you've posted here, I don't think this has anything to do with versioning. The call to MyServiceCall
is a returning a collection of complex values, whereas the call to GetProductsByRating
is returning a collection of entities. Since Atom doesn't have a concept of "a collection of complex values", OData defines its own XML format. But Atom does define a concept of "a collection of entities", so OData reuses the feed concept from Atom.
So I don't see an issue with versioning here. This is just a difference between the way that different kinds of payloads are formatted.
If you're looking at the HTTP headers, and you're confused about why a v3 server would ever respond with a header indicating the payload is v1, note that the WCF Data Services server always responds with the lowest version needed for that particular response. So if you ask a v3-capable server for a payload that has no v3 features, the server will mark the payload as being v2 or v1 (otherwise, it might block clients that are not v3 compatible but would actually be able to read this payload).