When the uid refers to an appointment contained in a local calendar the code works correctly, when the uid refers to an appointment in a shared calendar (not owned by the account that performs the request) I get the following error:

I need some kind of id to fetch a specific appointment using the GetAppointment method, the id can't change in time and I need to use the same id to fetch the appointment from different zimbra accounts who share calendars with each others.

uid is present in metadata of the appointment created in owner's mailbox and it's not present in metadata of the appointment in other user's mailbox with whom calendar has been shared. That's why search with uid works for items in local folder and doesn't for shared folder.You should use "id" instead of uid to get appointments in shared folder.id format would be "<accountIdOfOwner>:<itemIdInOwnerMailbox>"

when id is used the request will get proxied to the owner mailbox for appointment search and result would be returned.