It appears as if I did. Unfortunately, Zimbra does not provide the data I wanted in query results, so I used my solution suggested in the first post. I queried getallcos and getalldomains and stored them in python dictionaries. Then i took each user one by one and sorted them by splitting their domain name from their account like
soandso@domain.com .
I used the domains to cross reference the COS table, if the user didnt have one supplied, I used the domain default COS. The end result is a dictionary of domains with a dictionary of COS's used by that domain inside with a dictionary of users in there.
It's a bit of pain, but there isn't really any other good way.
To use python, you can use URL lib since zimbra doesn't publish the necessary service descriptions to use a SOAP client. I also used BeautifulSoup's BeautifulStoneSoup to parse the XML. It's awesome.