The JMAP plugin for Roundcube provides JMAP support for Roundcube by exposing a RESTful API Endpoint which speaks the JMAP Protocol.
The following data types are currently supported by the JMAP Plugin for Roundcube:
- Signatures over the JMAP for Mail protocol
- Contacts over the JMAP for Contacts based on JSContact protocol (see https://www.audriga.eu/jmap/jscontact/ )
- (Planned) Calendars over the JMAP for Calendars protocol
This plugin allows Roundcube to function as an address book sync server. It makes use of the JMAP for Contacts protocol for that. JMAP for Contacts is a successor to CardDAV.
- Run
make
to initialize the project for the default PHP version (8.1). Use other build targets (e.g.make php56_mode
ormake php70_mode
) instead, in case you are using a different version. - (optional) there are build targets that enable logging to graylog instead of a file, e.g. run
make graylog56_mode
- Run
make zip
to create a zipped package underbuild/
- Extract the resulting package into the
plugins
folder of your Roundcube (Make sure the folder is namedjmap
). - 🎉 Partytime! Help fix some issues and send us some pull requests 👍
Set up your favorite client to talk to Roundcube's JMAP API.
- Run step 1) from above.
- Run
make update
to update depdendencies and make devtools available
To run all tests run make fulltest
. This requires Podman
(for Static Anaylsis) and Ansible (for Integration
Tests).
You can also run them separately:
- Static Analysis via
make lint
- Unit Tests via
make unit_test
PHP: 5.6, 7.0, 8.1 and 8.2
Roundcube: 1.2, 1.3, 1.4 and 1.6
For debugging purposes it makes sense to throw some cURL calls at the API. For example, this is how you tell the JMAP API to return all Contacts:
curl <roundcube-address>plugins/jmap/jmap.php -u <username>:<password> -d '{"using":["https://www.audriga.eu/jmap/jscontact/"],"methodCalls":[["Card/get", {"accountId":"<username>"}, "0"]]}'