====== Developer Documentation ====== Welcome to the prime page for developer documentation on Prosody. Module developers will find most useful the documentation of our [[.:developers:modules|module API]], our [[#Utility APIs]] and often the properties and methods of [[.:developers:sessions|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 [[:discuss|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. | [[.:developers:core:configmanager]] | Load and parse configuration files, and retrieve configuration options | | [[.:developers:core:componentmanager]] | Register components (like hosts, but usually on subdomains) on a running server | | [[.:developers:core:loggingmanager]] | Manages logging, can be used to register new log message destinations | | [[.:developers:core:modulemanager]] | Responsible for loading/unloading modules and implementing the [[.:developers:modules|module API]] | | [[.:developers:core:hostmanager]] | Activate and deactivate hosts in the current running server | | [[.:developers:core:rostermanager]] | Manages users' [[.:developer:roster|rosters]], provides an API to add/remove contacts and send pushes | | [[.:developers:core:s2smanager]] | Creates outgoing and handles incoming s2s connections and sessions | | [[.:developers:core:sessionmanager]] | Creates and destroys session objects for local clients | | [[.:developers:core:stanza_router]] | Contains functions for dispatching and routing stanzas | | [[.:developers:core:usermanager]] | Manage users on the server, and validate their credentials | | [[.:developers:core: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. | [[.:developers:util:datamanager]] | Allows persistent storage and retrieval of data | | [[.:developers:util:datetime]] | Retrieve the current or specified time in various XMPP formats | | [[.:developers:util:encodings]] | Encode/decode data using algorithms such as base64, IDNA, stringprep | | [[.:developers:util:events]] | Library to abstract the firing and handling of named events | | [[.:developers:util:hashes]] | Calculate hashes of input data using MD5, SHA1, SHA256, etc. | | [[.:developers:util:jid]] | Common functions for splitting and prepping JIDs | | [[.:developers:util:logger]] | An interface to Prosody's logging system | | [[.:developers:util:multitable]] | A multitable is a handy tree-like data structure, a table allowing multiple keys | | [[.:developers:util:serialization]]| Convert objects into a format suitable to save to disk or send across the network | | [[.:developers:util:timer]] | Set callbacks to be called after a specified delay | | [[.:developers:util:stanza]] | Create and manipulate stanzas and other XML objects | | [[.:developers:util:uuid]] | 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. | [[.:developers:modules:mod_adhoc]] | Provides functionality to easily add new Ad-Hoc commands | | [[.:developers:modules:mod_storage_sql]] | Describes the used SQL format | ====== Common internal objects ====== * [[doc:developers:sessions|The 'session' object]]