Mercurial > prosody-modules
diff mod_http_roster_admin/README.markdown @ 3006:e6f91e00b507
mod_http_roster_admin: Add missing protocol docs
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 29 Apr 2018 08:33:54 +0100 |
parents | 234d679076c4 |
children | af1b3cef52e1 |
line wrap: on
line diff
--- a/mod_http_roster_admin/README.markdown Tue Apr 17 14:00:40 2018 +0200 +++ b/mod_http_roster_admin/README.markdown Sun Apr 29 08:33:54 2018 +0100 @@ -44,7 +44,37 @@ set to “http://app.example.org/contacts/%s”, then Prosody will make a GET request to http://app.example.org/contacts/john -## Notifying Prosody of roster changes +## Protocol + +### Fetching rosters (Prosody to web app) + +Prosody considers the web application to always hold the most accurate and up-to-date +version of the user's roster. When a user first connects, Prosody fetches the roster +from the web application and caches it internally. + +Prosody will make a GET request to the URL specified in Prosody's configuration parameter +'http_roster_url'. In this URL, the pattern '%s' is replaced by an URL-encoded username. + +For example, when the user 'john' connects to Prosody, and http_roster_url is set +to "http://app.example.com/contacts/%s", Prosody will make a GET request to "http://app.example.com/contacts/john". + +The web app must return a JSON object, where each key is the JID of a contact, and the corresponding +value is data about that contact. + +If the user 'john' has friends 'marie' and 'michael', the web app would return a HTTP '200 OK' response +with the following contents: + + { + "marie@example.com": { + "name": "Marie" + }, + + "michael@example.com": { + "name": "Michael" + } + } + +### Notifying Prosody of roster changes The external service needs to notify Prosody whenever a user's roster changes. To do this, it must make an HTTP POST request to either: