I am new to Mac development and wanted to know if it was possible to create an App that integrated with OF via an SDK to create a different view model to view and manage tasks? I have an idea but would hate to start it only to find out that I can not get access to the underlying data structures.
We’ve got a feature request filed for making an API available to third parties, and it’s something we’ve occasionally discussed in abstract terms. That said, the concrete feature requests from our existing customers have kept us quite busy for a number of years; we expect that to remain the case for the foreseeable future.
Short answer: no, there isn’t an API.
Longer answer: OmniFocus uses standard webDAV commands to pass information around via zip-compressed transaction files. We don’t have external documentation for the transaction file format, but it’s based on XML and was written to be as readable as we knew how to make it.
Some folks have reverse-engineered the process successfully, which we think is fine. We just don’t have the bandwidth available right now to coordinate more closely with external parties looking to do so. (Aside from the information in this post, we’re not going to be able to offer any additional help.)
There are some posts from our CEO on our old forums where he talks about how OmniFocus works. For example, here’s a thread where he discusses how the app links together the various transaction files in the database. I know there are some other posts from him on that forum where he discusses this topic, but I’m afraid I don’t have links handy.
If you want to observe the webDAV actions the app takes during the sync process, you can enable some additional logging in OmniFocus for Mac by way of the following terminal command:
defaults write com.omnigroup.OmniFocus XMLFileManagerDebug -bool true
You can disable the sync logging later by entering this command:
defaults write com.omnigroup.OmniFocus XMLFileManagerDebug -bool false
Hope this helps!