
I expect it would be easy for contained objects, such as events or unions, since they could just add another field in the object. This shouldn't break anything, requested or not.
"birth":{"date":{"day":29,"month":6,"year":1951,"locked": true}}
I think the difficult ones would actually be names, gender, living, occupation, since they're not defined in separate objects.
{"first_name":"John","last_name":"Smith","gender":"male"}
There is no easy place to associate the lock per item. Something like this would break stuff
{"gender": {"value":"male","locked": true}} (would break stuff)
So I'd think you'd have to have a separate element for such data that defines the locks in an array. This could easily be added in the "field" get request.
{"locked":["names","gender","occupation"]}
This method could also probably handle events and unions as well if you didn't want to use the first method.
{"locked":["birth_date","union-1343234"]}