My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

zOGI is the ZideStore OpenGroupware Interface.

Two editions of OpenGroupware now support zOGI; the Objective-C ZideStore (via a bundle included since 2007-08-19, r1994) and the OpenGroupware Coils (Python) edition of OpenGroupware. The code hosted here is the development branch of the Objective-C implementation of the protocol. The OpenGroupware Coils implementation of the protocol is hosted within the OpenGroupware Coils project. The production version of the Objective-C implementation is in the ZideStore trunk. Documentation for both versions implementations is here - they work the same!

MISSION: To provide a clean and consistent XML-RPC API to the full suite of functionality provided by the OpenGroupware groupware server. zOGI provides a simple mechanism to build all manner of collaborative applications on the solid and robust platform provided by OpenGroupware extending and integrating groupware functionality to existing applications as well as creating new applications (such as Consonance).

To keep up-to-date with zOGI development it is recommended to follow the Ohloh journal for zOGI. Whenever zOGI is updated a brief entry is made on the journal. Subscribing to this journal requires creating an Ohloh account.

Applications

Several applications either have been built or are under development using the zOGI API to utilize the powerful OpenGroupware groupware and collaboration engine. If you have developed or are developing an application, utility, or component using the zOGI API please let us know and we'll list it here. Feedback on any existing zOGI application or project is also appreciated.

Links

API

Bindings

  • PHP
  • .NET - a .NET binding for the ZOGI protocol is provided by the Whitemice.ZOGI.Backend assembly which is part of the Consonance project. Use of this assembly is documented on the ZOGI page of the Consonance wiki.
  • Python should not require any binding, just use xmlrpclib.
  • Jython

Developer Tips

Support & Community

Questions regarding zOGI, the zOGI API, or zOGI development should be directed to the XML-RPC mailling list hosted by the OpenGroupware project.

Understanding zOGI Entities

Each zOGI API call (with the exception of getTypeOfObject) will return, if successful, either a dictionary or an array of dictionaries. Every dictionary returned represents a groupware object of a specific type identified by the entityName attribute.

Detail Levels

Object requests and search requests specify a detail level. This detail level is an integer that is used with a bit mask in order to specify how much information about the object(s) you requested should be marshaled and returned to the client. The detail levels are defined in the zOGIDetailLevels.h include file:

#define zOGI_INCLUDE_NONE              0
#define zOGI_INCLUDE_NOTATIONS         1
#define zOGI_INCLUDE_OBJLINKS          2
#define zOGI_INCLUDE_PARTICIPANTS      4
#define zOGI_INCLUDE_COMPANYVALUES     8
#define zOGI_INCLUDE_PROPERTIES       16
#define zOGI_INCLUDE_LOGS             32
#define zOGI_INCLUDE_CONFLICTS        64
#define zOGI_INCLUDE_MEMBERSHIP      128
#define zOGI_INCLUDE_CONTACTS        256
#define zOGI_INCLUDE_ENTERPRISES     512
#define zOGI_INCLUDE_PROJECTS       1024
#define zOGI_INCLUDE_COMMENT        2048
#define zOGI_INCLUDE_TASKS          4096
#define zOGI_INCLUDE_PLUGINS        8192
#define zOGI_INCLUDE_CONTENTS      16384
#define zOGI_INCLUDE_ACLS          32768
#define zOGI_INCLUDE_EVERYTHING    65535

If a detail level of zero is specified then only the objects core attributes are returned. Specifying details not appropriate to the object returned is acceptable, that request will simply ignored for the object of the inappropriate types. This allows you to requests object of different types, such as tasks and appointments, in a single call to getObjectsById while still retrieving all the information you need.

For instance if you wanted both the properties and participants of an appointment you would request a detail level of 20 (16 + 4). You can also specify a detail level of 65535 as short hand for retrieving all the available information about the objects. But it is best to only retrieve the information you require in order to avoid placing unnecessary load on the groupware server.

The detail levels of zOGI_INCLUDE_OBJLINKS (2), zOGI_INCLUDE_PROPERTIES (16), and zOGI_INCLUDE_LOGS (32) apply to all object types.

Special Keys

The zOGI dictionary representing an object may have several keys whose start with the underscore character. These are special keys usually added to the dictionary as a result of the specified detail level. The contents of a special key is always a, possibly empty, array. Special keys are:

  • ACCESS - This key contains an array of acl entities.
  • COMPANYVALUES - This key will contain an array of companyValue entity dictionaries. This is only relevant for Contact and Enterprise entities.
  • CONTENTS
  • CONFLICTS - This key is an array of appointmentConflict entities and represents the conflicts that are present with the appointment.
  • DEFAULTS - This key is an array of a single defaults entity, it is only returned by a call to getLoginAccount.
  • FLAGS - This key is an array of strings used to provide hints to the client about the object. The FLAGS key can also be submitted back to the server in the case of putObject and deleteObject in order to influence how the operation is performed. The meaning of the strings in the FLAGS key is specific both to the method being called and the type of entity being manipluted via the method.
  • LOGS - This key will contain an array of logEntry entity dictionaries. This represents the change history of the object. This should only be requested if desired as a long-lived object can have a significant amount of history.
  • MEMBERSHIP
  • NOTES - Contains the notes for an Appointment or Project; in the case of a Task it contains taskNotations.
  • OBJECTLINKS - Contains the objectLinks related to the entity.
  • PARTICIPANTS - This key will contain an array of participant entity dictionaries.
  • PLUGINDATA - This key may contain an array of PluginData entities.
  • PROPERTIES - This key will contain an array of objectProperty entity dictionaries.
Powered by Google Project Hosting