UpdateTask takes parameters like "assignments" which is somewhat misleading when considering what the word implies in that context. The "unnassignedUser" parameter is perhaps hinting that assignments is a kind of sub-action, but this does not follow the apparent convention used for the other parameters.
Should not these parameters be replaced by "real" actions instead? e.g. AssignTask(taskId, userId), UnnassignTask(taskId, userId) and have UpdateTask(taskId, assignments) replace the assignment if that parameter is supplied.
I also find it a bit confusing having non-verbs like "assignments" representing an action within an action. I would think it would be easier to understand a declaration like:
"I'd like to update the task to the following: due date: ..,"
and if sub-actions must be part of it: "unassignUser: ..., assignUser: ..."
as opposed to: "I'd like to update the task to the following, due date: ..., assignments: .. and unassignedUsers: .."