There is nothing wrong with returning the full representation of resources in the body of another request. It may be on the verbose side, though, as you mentioned.
Given that some callers of the service may only need to return a URI, but sometimes you want to reduce the number of round trips through the network, i.e. you want everything to be in one call, the term you are looking for is forecasts.
These are different representations of your resources, satisfying customer needs.
You can specify them in the URI parameter, for example, GET /Events/1?venueProjection=full,teamProjection=uri
And then return the projection as requested by the client.
"links": { "Venue": { "uri": "/Venues/1", "attr1": "value1", "attrN": "valueN" }, "Tickets": "/Tickets?event_id=1", "Teams": "/Teams?event_id=1", "Registrations": "/Registrations?event_id=1" }
Note. . Always return the URIs with your projections so that if they are not populated, the client has easy access to the full resource later.
I suggest you read something around Google’s “holiday forecasts” or check out the RESTful Cookbook.
James source share