|
| 1 | +--- |
| 2 | +link: https://jmap.io |
| 3 | +title: JSON Meta Application Protocol |
| 4 | +tags: |
| 5 | + - specification |
| 6 | + - IETF |
| 7 | + - email |
| 8 | + - JSON |
| 9 | + - protocol |
| 10 | +github: https://github.com/jmapio |
| 11 | +--- |
| 12 | +JSON Meta Application Protocol |
| 13 | + |
| 14 | +> As an open standard, JMAP is the alternative to proprietary email APIs that only work with Gmail. It’s a much needed modern email standard that makes email more open to innovators like you. |
| 15 | +
|
| 16 | +Supported by [[Fastmail]]. |
| 17 | + |
| 18 | +## FAQ |
| 19 | + |
| 20 | +Selected entries from the FAQ |
| 21 | +### Why use HTTPS/JSON? |
| 22 | + |
| 23 | +The short answer is it's good enough, it's widely understood, and it's by far the easiest thing for developers to adopt. There's support in basically all OSes and programming languages. And it's easy to read and debug. |
| 24 | + |
| 25 | +HTTP doesn't tend to run into firewall issues, and is so commonly used that it has integrations which can help with optimisation (for example, iOS has built-in support for optimising radio usage by batching HTTP calls from different apps where possible, which their mail team have told us they would like to be able to use). This isn't an innate advantage of HTTP, but rather an advantage of its ubiquity. |
| 26 | + |
| 27 | +With GZIP, JSON data is reasonably compact and fast enough to serialise/parse. However, the encoding/transport part of JMAP is not core to its operation, so future specifications could easily add alternatives (e.g. [WebSocket](https://tools.ietf.org/html/rfc6455) instead of HTTPS, [CBOR](http://tools.ietf.org/html/rfc7049) instead of JSON). For the initial version though, HTTPS+JSON makes the most sense. |
| 28 | + |
| 29 | +### End-to-end encryption |
| 30 | + |
| 31 | +A lot of the optimisations for efficient client-server sync require the server to be able to read the message. If everything were encrypted, the server would basically be a dumb blob store. This is particularly bad for mobile, where you only want to sync partial information. Users expect to be able to search their whole archive, so either you need all the data in the client, or the server needs to have access to the data. |
| 32 | + |
| 33 | +JMAP is therefore not introducing any new measures to address end-to-end encryption. The best advice is probably to run your own "JMAP server" on trusted hardware; otherwise you need to sync the entire multi-gigabyte mail spool to all your devices. JMAP is also simple enough that you could run the server on multiple machines with an underlying replication protocol over encrypted links and have that do your smarts. |
| 34 | + |
| 35 | +## IETF |
| 36 | + |
| 37 | +* IETF Working Group <https://datatracker.ietf.org/group/jmap/about/> - now moving on to contacts and calendars |
| 38 | +* A JMAP Subprotocol for WebSocket [[RFC8887](https://www.rfc-editor.org/rfc/rfc8887.html)] |
| 39 | +* JMAP Blob Management Extension [[RFC9404](https://www.rfc-editor.org/rfc/rfc9404.html)] |
| 40 | +- JMAP Quotas [[RFC9425](https://www.rfc-editor.org/rfc/rfc9425.html)] |
| 41 | + |
| 42 | +In development: |
| 43 | +- [JMAP Contacts](https://jmap.io/spec-contacts.html) |
| 44 | +- [JMAP Calendars](https://jmap.io/spec-calendars.html) |
| 45 | +- [JMAP Sharing](https://jmap.io/spec-sharing.html) |
| 46 | +- [JMAP Tasks](https://jmap.io/spec-tasks.html) |
| 47 | + |
| 48 | +Data Formats |
| 49 | +* JMAP was designed in conjunction with new JSON-based file formats for contacts and calendars, which can also be used standalone or in other protocols. |
| 50 | +* JMAP Contacts uses [JSContact (RFC9553)](https://www.rfc-editor.org/rfc/rfc9553.html) as the data format for contacts. |
| 51 | +* JMAP Calendars uses [JSCalendar (RFC 8984)](https://www.rfc-editor.org/rfc/rfc8984.html) as the data format for events. |
| 52 | +### JSON Meta Application Protocol |
| 53 | + |
| 54 | +The base layer specification for all application types. [RFC8620](https://datatracker.ietf.org/doc/html/rfc8620) |
| 55 | + |
| 56 | +> This document specifies a protocol for clients to efficiently query, fetch, and modify JSON-based data objects, with support for push notification of changes and fast resynchronisation and for out-of-band binary data upload/download. |
| 57 | +
|
| 58 | +### JSON Meta Application Protocol (JMAP) for Mail |
| 59 | + |
| 60 | +This is the email specific RFC. [RF8621](https://datatracker.ietf.org/doc/html/rfc8621) |
| 61 | + |
| 62 | +> This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP). Clients can use this to efficiently search, access, organise, and send messages, and to get push notifications for fast resynchronisation when new messages are delivered or a change is made in another client. |
0 commit comments