I suppose it depends on how it is supposed to be used.
If you are just going to do something like simple, so that the client passes ALL the information necessary to update the ENTIRE Employee object, you only need to expose one endpoint, and you can just do ...
domain/employee/{employee_id}
As @taylonr explained. This is more of a script for the API that you advertise to third parties. The reason you create such a method is because it allows third parties to create their own functions to update the entire resource; and then pass it on to you. In other words, having all the available resources is a good catch; but probably not the best if you use it for your own web application.
But if this is the backend of a web application, and you are going to do something related; but does not require knowledge of all the information to complete the intended action, then you can follow this paradigm:
domain/employee/{employee_id}/action
So, for example, when I picked up your post, the message that Stackoverflow uses under the hood was ....
noun noun verb verb | | | | | | | | http://stackoverflow.com/posts/8478829/vote/2
The reason this is done is because all you need is a url and session information (your authenticated server-side object) and you can do whatever you need.
you said, that
My other concern is that it seems that it is not elegant to send an object with only certain fields filled in, because the scheme requires all the fields for the object, and skipping fields is only for POST support. I. e. this requires separate circuits only to support operations or without circuits - not one of them seems correct.
but I do not think that this is a real concern. Instead of relying on the client to convey all the information for the object that he would like to update, you simply use the "noun" part - posts/8478829
= and allow the resource server.