Omphalos is a lossless dictionary representation of any object from the OpenGroupware model. Omphalos can be serialized to XML-RPC, JSON, Python Dict, YAML, or XML. Omphalos representation is used extensively both internally and by the zOGI API as exposed by XML-RPC and JSON-RPC.
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.
| Level | Description |
|---|---|
| 0 | None |
| 1 | Notations |
| 2 | Object Links |
| 3 | Participants |
| 8 | Company Values |
| 16 | Properties |
| 32 | Logs |
| 64 | Conflicts |
| 128 | Membership |
| 256 | Contacts |
| 512 | Enterprises |
| 1024 | Projects |
| 2048 | Comment |
| 4096 | Tasks |
| 8192 | Plugin Data |
| 16384 | Contents |
| 32768 | ACLs |
| 65535 | Everything |
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 Object Links(2), Properties (16), an Logs (32) apply to all first-class proper object types.
The Omphalos 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:
| Key | Description |
|---|---|
| _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. |
| _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. |