Initially I had the ETag dangling off of the TJH class, with a [JsonIgnore]. 
It did not feel explicit enough, but on second thought, when the controller compare the incoming etag with the returned etag and discard the History[] if they match, it is meaningful enough. Bottom line, this Result object can be removed.
An alternative to .ETag on the History object is to follow @suwatch suggestion of ..,out string currentEtag). I think I'll go with that one