What you're dealing with is very similar to etags. The Google Cloud API design patterns
suggests "an API should include a string field etag in the resource definition." Looking at
a few examples, you can see the pattern: User would have a rowversion field that would be set when returned by the service. When being passed to the service to be modified, the field would be set to the
old version.
That approach is probably pretty natural in the code, as the client could do a get(), modify the proto in-place, and then a set(). It wouldn't even have to copy the rowversion explicitly.