Fact-checked by Grok 2 weeks ago

JSON Meta Application Protocol

The JSON Meta Application Protocol (JMAP) is an open protocol designed for efficiently querying, fetching, modifying, and synchronizing JSON-based data objects—such as , calendars, and contacts—between clients and servers over HTTP, with built-in support for notifications and fast resynchronization. It serves as a modern alternative to legacy protocols like IMAP and , optimizing for mobile and web environments by minimizing network usage through batched requests, delta updates, and stateless operations. JMAP employs a uniform structure, where clients send authenticated requests containing method calls (e.g., /get, /set, /query) to a server , receiving responses that enable handling without persistent connections. Developed initially by the email provider to address limitations in traditional protocols, JMAP emphasizes developer-friendliness, security via , and scalability for large-scale deployments. Its core specification, outlined in 8620, provides a generic framework for , while extensions like RFC 8621 define mail-specific capabilities, including mailboxes, threads, objects, and submission processes compatible with IMAP semantics such as labels and keywords. Key features include immutable object identifiers for reliable tracking, to prevent abuse, out-of-band handling for uploads/downloads, and mechanisms for notifying clients of changes, such as new arrivals. JMAP's data model supports internationalization, efficient searching with snippets, and account-level capabilities registration, allowing servers to advertise supported features dynamically. It has been adopted in production by services like and integrated into open-source projects such as Apache James and Stalwart Mail Server, promoting an ecosystem of interoperable clients and servers. Standardized by the IETF in 2019, JMAP continues to evolve through community contributions, with ongoing extensions for areas like push delivery and event notifications.

Introduction

Definition and Scope

The JSON Meta Application Protocol (JMAP) is an open that enables clients to efficiently query, fetch, and modify JSON-based data objects stored on a , with built-in support for push notifications of changes and efficient transfer of . Defined as a generic protocol, JMAP operates over HTTP/1.1 or (with TLS required), allowing seamless integration with modern web and mobile applications by leveraging familiar formats and HTTP semantics. Its primary scope encompasses the synchronization of structured data such as email messages, calendars, contacts, and associated between clients and servers, facilitating updates without the inefficiencies of polling-based approaches. Push notifications are handled via or pushes to a client-provided , with extensions available for WebSockets, enabling servers to proactively inform clients of data changes, which is particularly suited for resource-constrained environments like mobile devices. While extensible to other object types through capability declarations, JMAP's technical boundaries focus on abstract object manipulation rather than domain-specific semantics, ensuring broad applicability while deferring specialized handling to extensions. Central to JMAP's design are sessions tracked via state tokens that maintain context across stateless requests; capability discovery, where servers advertise supported features and data types through a capabilities object; and method-based requests and responses using a format similar to for structured invocations like object retrieval or updates. These elements collectively provide a flexible framework for delta-based , reducing and compared to legacy protocols. The core protocol was specified in RFC 8620, published in July 2019 by of and Chris Newman of , emphasizing generic mechanisms for object querying, creation, modification, and deletion to serve as a foundation for application-specific extensions. This initial specification establishes JMAP as a modern alternative motivated by limitations in protocols like IMAP, though its evolution builds on broader needs for web-friendly data access.

Historical Context

The JSON Meta Application Protocol (JMAP) originated in 2014 when engineers at Fastmail began developing it as a modern alternative to legacy protocols like IMAP, aiming to enable more efficient synchronization of email and other data for mobile and web applications. This initiative was driven by the need to overcome IMAP's limitations in the rising era of mobile computing during the 2010s, where constant polling for changes consumed excessive bandwidth and battery life on devices with constrained resources, while long-lived connections proved unreliable over intermittent networks. Fastmail's early implementation focused on stateless, HTTP-based interactions using JSON, allowing for faster partial syncs and better scalability compared to IMAP's stateful model. The protocol's formal development accelerated with the submission of the first Internet-Draft (draft-jenkins-jmap-00) on October 18, 2016, by of , which outlined the core mechanisms for querying and modifying data objects. In March 2017, the IETF adopted JMAP as a working group candidate, marking its transition from a company-specific project to an open standardization effort under the working group. This adoption facilitated broader input from the community, refining the protocol's design to incorporate push notifications for real-time updates directly within the core specification. Standardization culminated in July 2019 with the publication of 8620, defining the core JMAP protocol for efficient data access and push support, and August 2019 for 8621, specifying its application to mail synchronization. These RFCs represented the culmination of five years of iteration, evolving JMAP from Fastmail's proprietary use into a vendor-neutral hosted at jmap.io, influenced by RESTful principles for resource-oriented APIs and for structured remote procedure calls. Subsequent extensions, such as WebSocket bindings in 8887 (2020), further expanded its capabilities for persistent connections. As of 2025, JMAP continues to evolve with recent RFCs like 9749 for Web Push and specifications for calendars.

Protocol Design

Core Architecture

The JSON Meta Application Protocol (JMAP) establishes its core architecture through a session-based model that enables secure, efficient synchronization of data between clients and servers. Session establishment begins with an authenticated HTTP GET request to the /jmap/session , which returns a comprehensive Session resource object. This object includes critical details such as the apiUrl for requests, uploadUrl and downloadUrl for handling , eventSourceUrl for notifications, a list of available accounts with their IDs and names, and a state string representing the current server . The Session object also advertises supported capabilities, allowing clients to negotiate features like or contacts handling during initialization. This discovery mechanism ensures clients can adapt to server-specific implementations without prior configuration. At the heart of JMAP's communication is a batched JSON-RPC 2.0 format over HTTP POST requests to the apiUrl. Each request object contains a using array specifying the capabilities in use (e.g., ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"]) and a methodCalls array of invocations, where each invocation is [methodName, params, methodId]. For instance, a method like Email/query—prefixed by its capability—allows querying email data with parameters for filters and sorting. Responses mirror this structure with a methodResponses array of [methodName, resultOrError, methodId] and a sessionState string that updates to reflect any changes made during the batch. This batching supports multiple method calls per request, up to the maximum advertised by the server in the 'maxCallsInRequest' core capability property (at least 16), promoting efficiency by reducing round trips, while state tokens (via sessionState and capability-specific state properties) enable clients to track and resume synchronization from the last known server state, avoiding redundant data fetches. JMAP integrates push notifications to deliver real-time updates, primarily through the eventSourceUrl provided in the Session object, which supports Server-Sent Events (SSE) over HTTP for streaming StateChange objects that detail account modifications. Clients can subscribe to pushes using the PushSubscription capability, specifying verification mechanisms and delivery preferences, with fallbacks to client-initiated polling if real-time channels are unavailable. While core JMAP favors HTTP-based pushes, extensions like WebSocket subprotocols provide alternative channels for bidirectional communication in constrained environments. This design minimizes latency for updates across capabilities, such as email arrivals, without requiring constant polling. Error handling in JMAP is standardized across three levels to ensure robustness and idempotency. Request-level errors use HTTP status codes with JSON problem details (per RFC 7807), such as 401 for failures. Method-level errors return objects with types like unknownMethod, invalidArguments, forbidden, or accountNotFound when an invalid account ID is used, prefixed with urn:ietf:params:jmap:error:. Set-level errors in methods like obj/set include types such as notFound, invalidProperties, or rateLimitExceeded for excessive operations, accompanied by descriptive messages. enhances idempotency: parameters like ifInState in methods ensure actions apply only if the server's state matches the client's expectation, preventing duplicates or conflicts in concurrent scenarios. Transport in JMAP mandates secure, multiplexed connections to support its high-throughput needs. Servers must implement (RFC 7540) for request and flow control, enabling multiple concurrent over a single connection. TLS 1.2 or later is required (with 1.3 recommended), ensuring all traffic—including session discovery and calls—is encrypted end-to-end. Binary uploads and downloads leverage HTTP POST and GET with ranges for partial access, further optimized by HTTP/2's header compression and prioritization. This architecture prioritizes performance and security, making JMAP suitable for mobile and web clients handling large datasets.

Data Model and Capabilities

The JSON Meta Application Protocol (JMAP) employs a core data model centered on JSON objects represented as unordered maps of name-value pairs, where each object corresponds to a record of a specific type with an immutable server-assigned id property that uniquely identifies it within the same account and type. Properties within these objects are typed according to JSON standards, including strings, numbers, booleans, arrays, and nested objects, with certain properties marked as immutable to prevent changes after creation, ensuring consistency in data handling across operations. This model supports efficient querying and modification by treating objects as self-contained entities, with the type property often implicit in the context of methods like Foo/get or Foo/set. JMAP's capability system enables modular extensibility by allowing servers to advertise supported features through the capabilities property in the Session object, which is a map of keys to capability-specific objects detailing supported versions and parameters. Clients negotiate capabilities by including relevant URIs in the using array of their Request objects, restricting the session to those features and ensuring compatibility without assuming universal support. capabilities, such as "urn:ietf:params:jmap:core", are mandatory for all JMAP servers and define baseline behaviors like error handling and method invocation. Object types in JMAP include generic constructs like the QueryMethod for performing complex filtering and searching across data sets, which accepts parameters such as filter, sort, and position to enable efficient pagination and conditional retrieval. Accounts are organized via identifiers in the Session object's accounts map, with primary accounts for each capability indicated in the separate 'primaryAccounts' property of the Session object, facilitating multi-account management without conflating data scopes. Extensibility is achieved through custom properties prefixed with vendor-specific URIs in capability objects and data records, allowing implementations to add non-standard fields without conflicting with the core specification, as seen in extensions like "urn:ietf:params:jmap:submission". Versioning ensures by associating specific versions with URIs, permitting servers to evolve features incrementally while clients select compatible subsets during session . State management in JMAP relies on opaque server-generated state strings to track changes efficiently, with methods like Foo/changes using a sinceState parameter to retrieve only updates since the last synchronization, thereby avoiding full data resyncs and reducing usage. The property in responses provides a new state string for clients to reference in future requests, enabling delta-based updates that maintain consistency across push notifications and polling.

Specific Applications

Email Synchronization

The JSON Meta Application Protocol (JMAP) provides a structured approach to synchronization by defining an Email object that encapsulates message , headers, and body content in a format. This object includes core properties such as id for unique identification, threadId for grouping related messages, mailboxIds to indicate storage locations, keywords for flags like $seen or $draft, and receivedAt for the . Header fields are parsed into structured types, with from and to represented as arrays of EmailAddress objects containing names and email addresses, subject as a simple string, and messageId and references enabling threading by linking messages in conversation chains. Body-related properties include textBody and htmlBody for sequential plain-text or content suitable for display, attachments as an array of non-inline parts like images or files, and bodyStructure detailing the full tree for complex multipart messages. Key methods facilitate efficient email operations, with Email/query allowing clients to search and list emails using filters such as inMailbox for specific folders, text for full-text matching across body and attachments, or hasKeyword for flagged messages, alongside sorting options like receivedAt descending or subject ascending with collation support. The Email/get method retrieves detailed email data, supporting partial fetches via properties to limit to essentials like headers, or bodyProperties such as textBody and htmlBody for content, with bodyValues providing decoded text excerpts up to a server-defined byte limit. For modifications, Email/set handles creation of new drafts (initially marked with the $draft keyword), updates to properties like adding keywords or moving to different mailboxIds, and destruction of emails, all within transactions to ensure consistency. Synchronization in JMAP relies on state strings to enable delta updates, where clients track the server's state value from responses and use Email/changes or Email/queryChanges methods with a sinceState parameter to fetch only modified, added, or removed emails since the last sync. Mailbox roles standardize organization, assigning special names like inbox for incoming messages, sent for outgoing, and drafts for unsent compositions, with each mailbox limited to a single role as per the IANA IMAP Mailbox Name Attributes registry. Servers enforce quotas through capabilities such as maxMailboxesPerEmail to prevent excessive folder assignments and maxSizeAttachmentsPerEmail to control storage, rejecting operations that exceed these limits with specific error codes like tooManyMailboxes. Attachments and parsing are handled through inline integration within the object, where the bodyStructure property recursively describes all parts including types, subtypes, and dispositions (inline or attachment), allowing clients to reference specific partIds for fetching via Email/get with bodyValues. Non-display parts populate the attachments with details like blobId for retrieval, size in octets, and name for filenames, while hasAttachment flags messages with downloadable content. Servers support via the Email/parse , which processes raw blobs into structured objects, and offer server-side rendering options for textBody and htmlBody by extracting and decoding the primary text or parts, potentially truncating long content or excluding certain types for security. Search capabilities extend beyond basic filtering with full-text support in Email/query's text operator, which matches phrases case-insensitively across subjects, bodies, and attachments using server-indexed terms. The includes the SearchSnippet/get method for retrieving contextual excerpts, limited to 255 octets per result, with matched terms highlighted using <mark> tags in properties like subjectSnippet or previewSnippet to aid user interfaces in displaying relevant previews. Advanced search features, such as refined snippet generation and additional operators, are part of the core mail capabilities in RFC 8621.

Calendar and Contacts Handling

The JSON Meta Application Protocol (JMAP) extends its core capabilities to synchronize data through a that includes Calendar objects as named collections of CalendarEvent objects, where events can belong to multiple calendars within an account. CalendarEvent objects follow the JSCalendar Event format defined in RFC 8984, supporting properties such as start (a LocalDateTime in the event's ), duration (an duration string), utcStart and utcEnd (computed UTC timestamps), recurrenceRules (arrays of recurrence rule objects compatible with RRULE semantics), and recurrenceOverrides for exceptions to recurring instances. Attendees are modeled as participants within the event, each with properties like scheduleId (for scheduling identity), sendTo ( for notifications), and participationStatus (e.g., accepted, declined). Methods for manipulating calendar data include CalendarEvent/get, which retrieves event details including iCalendar-compatible representations via an optional wantICal argument, and CalendarEvent/set, which creates, updates, or destroys events while supporting sendSchedulingMessages to automatically generate iCalendar messages for attendee invitations or updates. Free-busy lookups are handled via the Principal/getAvailability method on the Principal object, specifying a time range with utcStart and utcEnd to return BusyPeriod objects indicating unavailable intervals. Push notifications for calendar changes are enabled through the urn:ietf:params:jmap:calendars capability, allowing clients to subscribe to CalendarAlert events for real-time updates on event modifications. For contacts, JMAP defines AddressBook objects as collections of ContactCard objects via RFC 9610 (2024), where each ContactCard represents an individual or group in the JSContact format defined in RFC 9553. Contact properties include name (a structured full name), emails (arrays of email addresses with labels and types), addresses (postal addresses with components like street, city, and country), and photos (references to blob IDs for image data). Searches are performed using the Card/query method, which supports filters on properties like name, email, or inAddressBook and sorting by fields such as created or name/given, with compatibility for vCard-based imports and exports through JSContact mappings. Integration across calendars and contacts leverages JMAP's access control lists (ACLs) for sharing, where and AddressBook objects include shareWith (a map of principal IDs to rights like read, write, or admin) and myRights (the current user's permissions). Time zone support uses IANA Time Zone Database identifiers (e.g., "America/New_York") for events, with fallback to account or principal defaults, and follows JSCalendar and JSContact guidelines for multilingual names and locales. events can reference email attachments as blobs via JMAP's model, enabling seamless inclusion of files from mailboxes.

Advantages and Comparisons

Improvements over Legacy Protocols

The JSON Meta Application Protocol (JMAP) addresses several architectural shortcomings in legacy email protocols such as IMAP, POP3, and SMTP by introducing a more efficient, flexible, and unified approach to . Unlike IMAP and POP3, which often require downloading entire or maintaining complex stateful connections, JMAP enables batched requests where multiple calls can be combined into a single HTTP request, significantly reducing the number of round trips between client and server. Additionally, JMAP supports partial fetches, allowing clients to retrieve only specific properties of objects—such as headers or attachments—rather than full message bodies as typically mandated by IMAP, thereby optimizing bandwidth usage especially in scenarios with limited connectivity. In terms of real-time capabilities, JMAP provides native push notifications through mechanisms like , eliminating the need for the polling-based command in IMAP, which can drain battery life on mobile devices and introduce delays in low-bandwidth environments. This stateless HTTP-based design contrasts with IMAP's reliance on persistent, stateful connections that are prone to interruptions, drops, and reconnection overhead, making JMAP more resilient for intermittent networks common in modern usage. POP3's unidirectional nature, which primarily supports downloading messages without efficient upstream synchronization, is also mitigated in JMAP through bidirectional change tracking that facilitates seamless updates across devices. JMAP's use of JSON over HTTP further simplifies protocol interactions compared to the text-based, MIME-encoded commands of IMAP and SMTP, which demand intricate parsing and can be hindered by firewalls or proxies that restrict non-HTTP traffic. This web-friendly format eases integration with contemporary development tools and reduces the for implementers, as JSON structures are more intuitive and less error-prone than the hierarchical, literal-string handling in legacy protocols. A key advancement lies in JMAP's unified data model, which extends beyond email to encompass calendars, contacts, and other types within a single, consistent framework, filling standardization gaps in IMAP and POP3 that lack native support for non-email synchronization and require separate protocols like or CardDAV. By design, JMAP overcomes these silos, enabling a cohesive for diverse data types while avoiding the fragmentation and issues prevalent in the ad-hoc extensions of older standards.

Performance and Security Features

The JSON Meta Application Protocol (JMAP) incorporates several performance optimizations designed to minimize network overhead and improve efficiency. By leveraging or later, JMAP supports , allowing multiple method calls to be batched within a single request and response, which reduces the number of round trips compared to traditional protocols that require sequential operations. Additionally, HTTP compression mechanisms such as are applicable to JMAP's payloads, enabling compact data transmission over the wire. The protocol's state-based model further enhances efficiency through methods like Foo/changes, which return only the deltas (created, updated, or destroyed items) since a specified account state, avoiding the need to re-fetch entire datasets during incremental updates. JMAP includes built-in mechanisms for to prevent abuse and ensure scalability. Servers may implement by rejecting excessive concurrent requests or throttling based on client behavior, returning appropriate error codes such as "rateLimit" to prompt client-side backoff strategies. Quota management is supported via dedicated methods like Quota/getQuota, allowing servers to enforce limits on storage and operations while providing clients with visibility into usage, which helps in graceful handling of constraints without disrupting service. On the security front, JMAP mandates the use of TLS version 1.2 or higher for all communications, ensuring encrypted transport and protecting against and tampering; TLS 1.3 is recommended for enhanced security. Authentication relies on HTTP authentication schemes, with bearer tokens or 2.0 commonly used in implementations to provide secure, token-based access without exposing credentials; basic authentication is discouraged in favor of application-specific passwords. Fine-grained is enforced through access control lists (ACLs) and permission checks, where unauthorized operations result in "forbidden" errors, enabling secure sharing of resources like mailboxes while restricting sensitive data exposure. JMAP's design promotes by maintaining a , where the server does not retain persistent state for individual clients beyond session , reducing the risk of data leakage from stored session information. In mail-specific extensions, partial account access limits metadata exposure during queries by treating inaccessible data as non-existent, further supporting privacy-conscious operations. As of November 2025, JMAP continues to evolve with extensions like 9425 for quotas (2023), 9670 for sharing (2024), and 9749 for Web Push (2025), enhancing its performance and security features.

Implementations and Adoption

Server-Side Implementations

Server-side implementations of the JSON Meta Application Protocol (JMAP) enable mail servers to provide modern, JSON-based access to , calendars, contacts, and other data, replacing or augmenting protocols like IMAP. These implementations vary in maturity, with open-source projects offering extensible frameworks and commercial offerings prioritizing production reliability. Early adoption began with proprietary developments, transitioning to standardized open-source support as the protocol matured through IETF RFCs. Among open-source servers, IMAP introduced experimental JMAP support in development versions around , achieving stable release with version 3.2.0 in 2020, focusing primarily on core capabilities. Stalwart Mail Server, written in , provides full JMAP core and support since its initial release in September 2022, extending to calendars, contacts, and file storage in subsequent updates. Apache James, a Java-based enterprise server, integrated JMAP as a core component starting with contributions in its 3.0 series around 2016, including recent enhancements like support in version 3.6.0 for push notifications. Commercial implementations include , which pioneered JMAP in production in 2014 using a custom framework, influencing the protocol's design and providing full support for mail synchronization. atmail, a Golang-based system, offers JMAP compliance for email access as part of its proprietary suite. These servers often adhere to the core JMAP specification ( 8620) and extensions like JMAP for Mail ( 8621), though support levels differ; for instance, and Apache James provide robust mail handling but may require extensions for full and contacts features, while Stalwart achieves comprehensive adherence across capabilities. Integration with existing storage backends enhances compatibility, such as through proxies that bridge JMAP to traditional IMAP servers like Dovecot, allowing gradual adoption without full replacement. The Stalwart IMAP-to-JMAP Proxy, for example, supports IMAP4rev1 and rev2, enabling JMAP clients to interact with Dovecot-stored data. Key implementation challenges include efficient indexing for the /search method, which demands optimized database structures to handle complex queries across large mailboxes without performance degradation, as outlined in the JMAP server implementation guide. Scaling push notifications, typically via WebSockets (RFC 8887), poses difficulties in large deployments due to connection management and resource demands, requiring clustered architectures to maintain real-time updates for thousands of users.

Client-Side and Ecosystem Adoption

Client-side implementations of the JSON Meta Application Protocol (JMAP) have proliferated through open-source libraries, enabling developers to build applications that leverage its efficient synchronization capabilities for , calendars, and contacts. The official JMAP JavaScript library, JMAP-JS, provides a full implementation of the JMAP , contacts, and calendars models, supporting asynchronous local changes and integration into web applications under the . For developers, the jmapc library offers a partially implemented client for JMAP , facilitating method calls and response processing in 3 environments. In the ecosystem, the jmap-client crate delivers a complete JMAP implementation compliant with relevant RFCs, emphasizing async support for high-performance applications. Several email clients have incorporated or experimented with JMAP support, enhancing user access to modern protocol features. is developing JMAP integration, planned for its version in late 2025 and subsequent releases on desktop and platforms, aiming to improve synchronization efficiency over traditional IMAP. On , , now evolving under the Thunderbird project, has ongoing development efforts for JMAP support as part of broader protocol enhancements. Web-based clients like benefit from community plugins, such as the audriga JMAP plugin, which exposes a RESTful endpoint for JMAP compatibility, allowing seamless integration without full backend overhauls. As of 2025, JMAP adoption among email providers remains niche but is expanding, particularly in open-source and specialized services, with recent advancements like JMAP for Contacts (RFC 9610, 2024) and planned Calendars extension. Providers like run JMAP in production for enhanced client performance, while servers such as IMAP and offer robust JMAP support, contributing to its use in approximately a handful of major implementations. Enterprise growth includes Thunderbird's upcoming Thundermail hosting service with full JMAP support. The JMAP ecosystem supports broader adoption through developer tools and community resources. The jmap.io website hosts an official tester for validating JMAP endpoints and capabilities, aiding in debugging and compliance checks. Community engagement occurs via IETF working group discussions and repositories, fostering contributions to libraries and extensions. Many clients incorporate JMAP with fallbacks to protocols like and CardDAV, ensuring compatibility during transitional deployments in calendar and contacts handling.

Development and Extensions

Standardization Process

The JSON Meta Application Protocol (JMAP) standardization began with individual submissions to the IETF in late 2016, leading to the formation of the dedicated JMAP (WG) on December 12, 2016, initially in a proposed state, and officially chartered in early 2017 under the Applications and Real-Time Area (). The WG was sponsored by the Area Directors and focused on developing an extensible protocol for synchronizing personal information management data, such as mail, calendars, and contacts, building on prior experimentation and field testing by contributors including the team. The WG chairs have included Bron Gondwana (appointed February 2017) and Jim Fenton (appointed April 2019), with earlier co-chairing by Barry Leiba. The standardization process involved multiple iterations of Internet-Drafts submitted to the IETF, undergoing community review, last calls, and expert shepherding before advancement to the Internet Engineering Steering Group (IESG) for approval. The core protocol specification progressed from draft-ietf-jmap-core-00 (posted March 2017) through 17 revisions, culminating in 8620, published as a Proposed Standard in 2019, which defines the general JMAP framework for querying, fetching, and modifying data objects with push notifications. Similarly, the mail-specific extension advanced from draft-ietf-jmap-mail-00 (March 2017) via 16 revisions to 8621, also a Proposed Standard from 2019, specifying the data model for email synchronization. Subsequent specifications followed suit: the subprotocol reached 8887 in 2020; the contacts extension, using JSContact format, was published as 9610 in December 2024; and other extensions like quotas (RFC 9425, June 2023) and scripts ( 9661, September 2024) emerged from analogous multi-revision cycles. The calendars extension remains in draft form (draft-ietf-jmap-calendars-25 as of October 2025), incorporating JSCalendar ( 8984) and undergoing ongoing reviews. Post-publication, errata and updates are tracked via the RFC Editor database, with any substantive changes requiring new drafts or revisions approved by the WG. Community involvement has been integral to the process, facilitated by the JMAP WG for discussions and feedback since 2017, and open-source contributions through the official repository at github.com/jmapio/jmap, which hosts , test suites, and implementation examples. The jmap.io website serves as the primary reference hub, providing , news, and resources to encourage adoption and . Interoperability testing has occurred during IETF meetings and interim sessions, such as the January 2020 JMAP interim focused on calendars and contacts, where implementers validated protocol behaviors across clients and servers. Governance of JMAP standards is handled by the IETF through the JMAP WG, with ongoing maintenance via the ART Area; the protocol holds no formal trademark, though the jmap.io branding is used informally by the community to promote the standards.

Ongoing Extensions and Future Directions

The JSON Meta Application Protocol (JMAP) continues to evolve through active Internet-Drafts within the IETF working group, focusing on enhancing synchronization capabilities for personal information management. One key ongoing extension is the JMAP Email Delivery Push Notifications (draft-ietf-jmap-emailpush-02), which enables servers to push notifications for new inbound email arrivals via the JMAP push channel, reducing polling overhead for clients. This draft, last updated in November 2025, incorporates updates aligned with JSCalendar specifications for better event grouping. Similarly, the JMAP for Calendars extension (draft-ietf-jmap-calendars-26), in the RFC Editor's queue as of November 2025, specifies data models for calendar events, including support for reminders and multi-user change tracking. The JMAP File Storage extension (draft-ietf-jmap-filenode-03), updated in October 2025, adds capabilities for synchronizing file storage and sharing, with forthcoming guidance on handling shared accounts and ownership. Other active efforts include revisions to the S/MIME sender extensions for secure email handling and updates to the tasks specification to align with recent JSCalendar versions. Proposed enhancements aim to address gaps in collaboration and security features. The JMAP Sharing extension was published as RFC 9670 in November 2024, including mechanisms for mail sharing, metadata handling, and change notifications, enabling more robust multi-user email scenarios. JSContact encryption extensions are being evaluated to integrate cryptographic keys with vCard data. These proposals build on core JMAP capabilities to support full tasks and reminders synchronization, potentially extending to server settings management as a dedicated specification. Challenges in these extensions include achieving seamless from protocols like IMAP, where stateful session contrasts with JMAP's stateless , complicating during transitions. considerations, such as GDPR for , require careful handling of and access controls in shared environments, while edge cases like IPv6-only deployments demand robustness without native dependencies. key integration for encrypted contacts and revocation mechanisms in shared files further highlight hurdles between clients and servers. Looking ahead, JMAP's future directions emphasize integration with emerging transport layers, such as potential updates for to leverage for improved performance and reliability in scenarios. Community efforts prioritize post-quantum (PKI) and certificate revocation to ensure long-term security against quantum threats, with ongoing IETF discussions aiming for broader adoption through standardized extensions.

References

  1. [1]
  2. [2]
    JSON Meta Application Protocol Specification (JMAP)
    JMAP is the developer-friendly, open API standard for modern mail clients and applications to manage email faster.
  3. [3]
    RFC 8621: The JSON Meta Application Protocol (JMAP) for Mail
    This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP).
  4. [4]
    JSON Meta Application Protocol (JMAP) - Apache James
    The JSON Meta Application Protocol (JMAP) is used for synchronising data, such as mail, calendars, or contacts, between a client and a server.
  5. [5]
    Overview | Stalwart Labs
    JMAP (JSON Meta Application Protocol) is a modern, efficient, and stateful protocol for synchronizing mail, calendars, and contacts between a client and a ...
  6. [6]
    JSON Meta Application Protocol (JMAP) Email Delivery Push ... - IETF
    This document specifies an extension to the JSON Meta Application Protocol (JMAP) that allows clients to receive an object via the JMAP push channel ...
  7. [7]
    RFC 8620 - The JSON Meta Application Protocol (JMAP)
    This document specifies a protocol for clients to efficiently query, fetch, and modify JSON-based data objects, with support for push notification of changes ...
  8. [8]
  9. [9]
  10. [10]
  11. [11]
  12. [12]
  13. [13]
    Information on RFC 8620 - » RFC Editor
    This document specifies a protocol for clients to efficiently query, fetch, and modify JSON-based data objects, with support for push notification of changes.
  14. [14]
    We're Making Email More Modern With JMAP - Fastmail
    Aug 16, 2019 · Development releases of the open-source Cyrus IMAP server have JMAP support already, built and maintained by Fastmail engineers. Set up a test ...
  15. [15]
    History for draft-jenkins-jmap -00 - IETF Datatracker
    Document history ; 2017-03-23. 00, Alexey Melnikov, IETF WG state changed to Candidate for WG Adoption ; 2017-03-23. 00, Alexey Melnikov, Stream changed to IETF ...
  16. [16]
  17. [17]
  18. [18]
  19. [19]
  20. [20]
    RFC 8621 - The JSON Meta Application Protocol (JMAP) for Mail
    This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP).<|control11|><|separator|>
  21. [21]
  22. [22]
    draft-ietf-jmap-calendars-25 - IETF Datatracker
    JSON Meta Application Protocol (JMAP) for Calendars. Abstract. This document specifies a data model for synchronizing calendar data with a server using JMAP ...
  23. [23]
  24. [24]
  25. [25]
    RFC 9610 - JSON Meta Application Protocol (JMAP) for Contacts
    Introduction. The JSON Meta Application Protocol (JMAP) [RFC8620] is a generic protocol for synchronising data, such as mail, calendars, or contacts, ...
  26. [26]
  27. [27]
  28. [28]
  29. [29]
  30. [30]
  31. [31]
  32. [32]
  33. [33]
  34. [34]
  35. [35]
    JMAP: A modern, open email protocol - IETF
    May 6, 2019 · The new JMAP email protocol provides a modern, efficient, easy-to-use API, built on many years of experience and field testing.Missing: origins Daboo Apple
  36. [36]
    JMAP News
    May 14, 2020 · Cyrus IMAP 3.2.0 released with JMAP support ... The Cyrus team proudly announced the first stable release of the new Cyrus IMAP 3.2 series: 3.2.0.
  37. [37]
    JMAP: It's like IMAP But Not Really - Unencumbered by Facts
    Jan 24, 2019 · JMAP is a modern REST like API that can do everything IMAP does but better. The driving force behind JMAP from what I can tell is Bron Gondwana, the CEO of ...Missing: origins Daboo Apple
  38. [38]
    The Future of Stalwart: Webmail, Roadmap, and Beyond
    Jun 20, 2025 · Almost exactly one year later, on September 17th, 2022, we proudly released version 0.1, initially known as the Stalwart JMAP server. From ...
  39. [39]
    JMAP Software Implementations
    Servers. Apache James (Java, Apache): Apache James, a.k.a. Java Apache Mail Enterprise Server is an open source mail server written entirely in Java.
  40. [40]
    JMAP implementation - Apache James
    Feb 9, 2016 · A transport-agnostic, stateless JSON-based API for synchronising a mail client with a mail server. It allows to develop easily a mail client in a browser.Missing: plugin | Show results with:plugin
  41. [41]
    JMAP Server Implementation Guide
    This document describes a recommended set of database tables and algorithms for efficiently implementing JMAP.
  42. [42]
    Apache James Server 3 - JMAP Configuration
    JMAP is intended to be a new standard for email clients to connect to mail stores. It therefore intends to primarily replace IMAP + SMTP submission.
  43. [43]
    JMAP client library for Rust - GitHub
    jmap-client is a JSON Meta Application Protocol (JMAP) library written in Rust. The library is a full implementation of the JMAP RFCs.Missing: JavaScript Python
  44. [44]
    What is JMAP: A Modern Alternative to IMAP & POP3
    ### Summary of JMAP Historical Context and Evolution
  45. [45]
    [EPIC] JMAP Support · Issue #3272 - GitHub
    Mar 21, 2018 · I guess at some point JMAP protocol will be implemented by K9 Mail. This time, JMAP is already implemented in few Mail servers, so wide adoption ...
  46. [46]
    JMAP API for Roundcube Webmail - GitHub
    The JMAP plugin for Roundcube provides JMAP support for Roundcube by exposing a RESTful API Endpoint which speaks the JMAP Protocol.
  47. [47]
    Introducing enterprise support for Roundcube - Nextcloud
    Aug 8, 2024 · Future releases of Roundcube will be able to work with the new JMAP standard supported by Stalwart, modernising and streamlining email ...
  48. [48]
    JSON Mail Access Protocol (jmap) - IETF Datatracker
    A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket. 2020-08. Proposed Standard RFC, Alexey Melnikov. 13 pages. RFC 9007. Handling Message ...
  49. [49]
    JSON Mail Access Protocol (jmap) - IETF Datatracker
    Group history. Date, By, Action. 2025-07-22, Bron Gondwana, Added milestone "Adopt a document for JMAP Server Settings" for review, due June 2026 ... 2017-12-31 ...
  50. [50]
    JMAP Open Standard for Email Moves Forward | Fastmail
    Dec 27, 2018 · We first proposed JMAP to the IETF in late 2016, and a new working group was founded to work on it in early 2017. I wrote last year about our ...<|control11|><|separator|>
  51. [51]
  52. [52]
    History for rfc8887 - IETF Datatracker
    Aug 27, 2020 · A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket. RFC 8887 · Revision differences · Document history.
  53. [53]
    History for draft-ietf-jmap-calendars -24
    This document specifies a data model for synchronizing calendar data with a server using JMAP. The file can be obtained via https://datatracker.ietf.org/doc/ ...
  54. [54]
  55. [55]
    JSON Meta Application Protocol Specification (JMAP) - GitHub
    This repo contains the specifications for JMAP. JMAP is a modern standard for email clients to connect to mail stores. It therefore primarily replaces IMAP ...
  56. [56]
    JSON Mail Access Protocol (jmap) - IETF Datatracker
    The JMAP protocol defined in draft-ietf-jmap-core is designed to be extensible to multiple datatypes which are useful for personal information management ...
  57. [57]
    draft-ietf-jmap-emailpush-02 - JSON Meta Application Protocol ...
    ... JMAP fully instead of IMAP, but it does support urn:ietf:params:jmap:emailpush, so the client can now use JMAP to receive push notifications. Jenkins ...
  58. [58]
    draft-ietf-jmap-calendars-25 - JSON Meta Application Protocol ...
    JMAP Capabilities, JMAP Error Codes, JMAP Data Types and JSCalendar Properties registrations have been approved. RFC Editor, RFC Editor state, IESG. Details.
  59. [59]
    draft-ietf-jmap-filenode-03 - JMAP File Storage extension
    Oct 17, 2025 · JMAP File Storage extension draft-ietf-jmap-filenode-03. Status; IESG evaluation record; IESG writeups · Email expansions · History.
  60. [60]
    JMAP for Calendars, Contacts and Files now in Stalwart
    Oct 22, 2025 · With this release, Stalwart becomes the first JMAP server to fully support the entire family of JMAP collaboration protocols, marking a new era ...