1====
2JMAP
3====
4
5About JMAP
6==========
7
8`JMAP <http://jmap.io/>`_ is an alternate mechanism for synchronising a mail
9client with a mail server, intended as a replacement for IMAP. It is a
10transport-agnostic, stateless JSON-based API, aiming to be compatible with the
11IMAP data model, but with reduced data usage and more efficient synchronisation.
12
13Configuration
14=============
15
16.. todo::
17
18    Stop duplication in this and developer-jmap by moving a chunk of this
19    information into /assets and include instead.
20
21JMAP support needs to be compiled in to the server using additional
22compile flags. Depending on your distribution, your package provider may
23have already done so. If not, check the
24:ref:`JMAP developer guide <developer-jmap>` for instructions on how to do
25so manually, assuming you have the source.
26
27.. sidebar:: JMAP configuration
28
29    |change-default-config|
30
31   .. include:: /imap/reference/manpages/configs/imapd.conf.rst
32       :start-after: startblob conversations
33       :end-before: endblob conversations
34
35   |
36
37   .. include:: /imap/reference/manpages/configs/imapd.conf.rst
38      :start-after: startblob conversations_db
39      :end-before: endblob conversations_db
40
41Once it's compiled, JMAP needs to be enabled in :cyrusman:`imapd.conf(5)`.
42
43Enable :ref:`conversation support <imap-concepts-deployment-db-conversations>`
44
45    * In :cyrusman:`imapd.conf(5)`, set ``conversations: 1``, ``conversations_db: twoskip``
46    * Create a conversations.db for each user using
47      :cyrusman:`ctl_conversationsdb(8)`: ``ctl_conversationsdb -b -r``
48
49JMAP clients
50============
51
52The official JMAP website maintains a list of `known clients with JMAP support
53<http://jmap.io/software.html>`_.
54
55The Cyrus :ref:`JMAP developer guide <developer-jmap>` has information on using
56the sample test clients.
57
58.. _jmap-implementation:
59
60JMAP implementation status
61==========================
62
63The JMAP implementation in Cyrus is at various stages of maturity.
64
65Working
66-------
67
68* **Contacts**
69    * All JMAP methods are implemented. JMAP blobs are not supported.
70
71* **Calendars**
72    * All JMAP methods are implemented. JMAP blobs are not supported.
73
74* **Messages**
75    * Most JMAP methods are implemented. The following methods are not planned for implementation:
76
77      * copyMessages
78      * reportMessages
79      * getVacationResponse
80      * setVacationResponse
81      * getIdentityUpdates
82      * setIdentities
83
84Not yet implemented
85-------------------
86
87* **Remote mailboxes**
88
89* **Events**
90    * Changes on mailbox entries trigger notifications. However, the JMAP event service is not implemented.
91