I've been working with the Zoho API for a number of months now and believe that this is a basic design flaw that needs to be addressed. I could be wrong, but think that it warrants some discussion.
I'm the administrator for my companies Zoho account. I am the only one who has an authentication token. All requests/responses with Zoho use my token.
Some questions:
1. When I create a new task on a Lead, who should this task be assigned to?
A) The Lead Owner?
B) Me (as the owner of the authentication token being used to make the change)?
2. When I convert the Lead to an Account/Contact, who should be the default owner of the new account?
A) The previous lead owner?
B) Me?
3. When I create a potential at the time the lead is converted, who should be the default owner of the new account?
A) The previous lead owner?
B) The "AssignTo" for the Account/Contact that is set by the API when I convert the lead?
C) Me?
Personally, I would suggest that if the Task/Account/Contact/Potential is not reassigned explicitly then it should default to the current record owner (A in all cases). In #3 then it would be B, because you are reassigning it. If you don't use the "AssignTo" then it should be A.
This is further complicated by the fact that you can't retrieve the current record owner easily through a single call. By using the getRecordByID method, it returns the ID of the record owner. But to assign a lead, task, account, potential, etc... you have to use the email address of the user - NOT the id. So you actually have to use the getUsers call, create a local map of IDs to email addresses.
For example, when I want to add a task to a Lead it *seems* that I should just be able to add the task and have it be assigned to the lead owner. Wrong! I have to:
1. use getRecordByID to get the ID of the owner (because this may have been switched in Zoho, so I can't cache it locally)
2. look up the owner's email address by owner ID in my local database (or user getUsers every time)
3. insert the task explicitly setting the task owner.
If I fail to specify a user then it defaults to me (the owner of the authentication token).
Furthermore... this is NOT the default behavior of the Zoho User Interface. For example, when you convert a lead then the Lead owner is the default owner. When you create a task then the current user is the default owner - however, I'd still argue that this isn't the correct behavior for the API.
Anyway - I've got it coded up on my side to work with the existing limitations. I just thought that I'd pass along my feedback and hope that this gets changed in the future.