Developer Documentation
Welcome to the prime page for developer documentation on Prosody.
Module developers will find most useful the documentation of our module API, our Utility APIs and often the properties and methods of session objects. Some modules which need to interface with the running server (add users, etc.) will want to look at our Core APIs
If after reading this you are still clueless, or can't find what you were looking for, you are encouraged to contact us! We also welcome anyone wanting to contribute to the project itself or the documentation.
Core APIs
As Prosody is a rapidly evolving project, the core API is subject to change with every non-minor release. As a result the documentation may lag a little behind the current API, and parts may be yet to have documentation written.
| configmanager | Load and parse configuration files, and retrieve configuration options |
| componentmanager | Register components (like hosts, but usually on subdomains) on a running server |
| loggingmanager | Manages logging, can be used to register new log message destinations |
| modulemanager | Responsible for loading/unloading modules and implementing the module API |
| hostmanager | Activate and deactivate hosts in the current running server |
| rostermanager | Manages users' rosters, provides an API to add/remove contacts and send pushes |
| s2smanager | Creates outgoing and handles incoming s2s connections and sessions |
| sessionmanager | Creates and destroys session objects for local clients |
| stanza_router | Contains functions for dispatching and routing stanzas |
| usermanager | Manage users on the server, and validate their credentials |
| xmlhandlers | Create suitable parser callbacks for handling an XMPP stream |
Utility APIs
These modules are designed to provide a unified API for both core and module developers. They help with common tasks, and provide useful data structures.
| util.datamanager | Allows persistent storage and retrieval of data |
| util.datetime API | Retrieve the current or specified time in various XMPP formats |
| util.encodings API | Encode/decode data using algorithms such as base64, IDNA, stringprep |
| util.events API | Library to abstract the firing and handling of named events |
| util.hashes API | Calculate hashes of input data using MD5, SHA1, SHA256, etc. |
| util.jid API | Common functions for splitting and prepping JIDs |
| util.logger | An interface to Prosody's logging system |
| multitable | A multitable is a handy tree-like data structure, a table allowing multiple keys |
| util.serialization | Convert objects into a format suitable to save to disk or send across the network |
| util.timer API | Set callbacks to be called after a specified delay |
| Stanza | Create and manipulate stanzas and other XML objects |
| util.uuid API | Generate unique string identifiers |
Specific Modules
These are prosody modules that have an API that can be used from other modules, or manage data in a format that needs documentation.
| Ad-Hoc Commands | Provides functionality to easily add new Ad-Hoc commands |
| mod_storage_sql | Describes the used SQL format |
