It seems a bit redundant in places. Could it not just be excluded? I'm wondering from an API design point of view.
For example, the ViewId is "is in the format of ga:XXXX, where XXXX" at https://developers.google.com/analytics/devguides/reporting/core/v4/migration#view_ids
The metrics expression is "ga:users" at https://developers.google.com/analytics/devguides/reporting/core/v4/migration#introduction
eg.
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":[
{
"viewId":"XXXX",
"dateRanges":[
{
"startDate":"2015-11-01",
"endDate":"2015-11-06"
}],
"metrics":[
{
"expression":"ga:users"
},{
"expression":"ga:sessions"
}],
...
}]
}
Same for dimensions, etc.