Kotlin Multiplatform library for the JMAP protocol with typed APIs for Core, Mail, Calendar, and Contacts, plus a raw escape hatch for unsupported extensions.
This repository is in a docs-first and test-driven bootstrap phase. Implementation starts only after architecture and process docs are reviewed.
License: Apache License 2.0
- Targets: JVM, Android, iOS, JS
- API model: typed-first APIs plus raw request/response escape hatch
- Auth: caller-supplied headers (
HeaderProviderstyle), no built-in OAuth flow - Extension handling: preserve unknown JSON fields for forward compatibility
- Realtime: optional module (not required for initial core release)
The planned module split is:
jmap-corejmap-mailjmap-calendarjmap-contactsjmap-blobjmap-filenode(draft-gated)jmap-sharingjmap-realtime-bindings(optional)jmap-testing
Detailed architecture and design decisions live in ARCHITECTURE.md.
- Test-driven implementation (red -> green -> refactor)
- Small, single-purpose commits
- Fast-forward history policy
- Mandatory quality gates per commit:
- build
ktlintdetekt- unit tests
See AGENTS.md and CONTRIBUTING.md for full contribution policy.
- PR validation workflow with required checks
- PR triage and labeling by GitHub Copilot workflow
- PR review by GitHub Copilot
- Release-confidence workflow on every push to
main - Regular security audits (CodeQL, Dependabot, Code Scanning, Secret Scanning)
- Planned GitHub Pages API docs publication with Dokka
All repository examples and docs must include authentication. Unauthenticated example flows are out of scope.
Comprehensive list of published JMAP Working Group RFCs.
Status badges are sourced from IETF Datatracker (doc.json std_level) so they auto-refresh from the upstream document metadata.
| RFC | Title | Status |
|---|---|---|
| RFC 8620 | The JSON Meta Application Protocol (JMAP) | |
| RFC 8621 | The JSON Meta Application Protocol (JMAP) for Mail | |
| RFC 8887 | A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket | |
| RFC 9007 | Handling Message Disposition Notification with the JSON Meta Application Protocol (JMAP) | |
| RFC 9219 | S/MIME Signature Verification Extension to the JSON Meta Application Protocol (JMAP) | |
| RFC 9404 | JSON Meta Application Protocol (JMAP) Blob Management Extension | |
| RFC 9425 | JSON Meta Application Protocol (JMAP) for Quotas | |
| RFC 9610 | JSON Meta Application Protocol (JMAP) for Contacts | |
| RFC 9661 | The JSON Meta Application Protocol (JMAP) for Sieve Scripts | |
| RFC 9670 | JSON Meta Application Protocol (JMAP) Sharing | |
| RFC 9749 | Use of Voluntary Application Server Identification (VAPID) in JSON Meta Application Protocol (JMAP) Web Push |
Comprehensive list of JMAP Working Group Internet-Drafts from the IETF Datatracker JMAP document index (active, active with IESG, and expired, checked on February 17, 2026).
Status badges are sourced from IETF Datatracker (doc.json state) so they auto-refresh from upstream metadata.
| Draft | Title | Status |
|---|---|---|
| draft-ietf-jmap-calendars | JSON Meta Application Protocol (JMAP) for Calendars | |
| draft-ietf-jmap-emailpush | JSON Meta Application Protocol (JMAP) Email Delivery Push Notifications | |
| draft-ietf-jmap-essential | JMAP Essential Profile | |
| draft-ietf-jmap-filenode | JMAP File Storage extension | |
| draft-ietf-jmap-mail-sharing | JMAP Mail Sharing | |
| draft-ietf-jmap-metadata | JMAP Object Metadata | |
| draft-ietf-jmap-portability-extensions | JMAP Migration and Portability Extensions | |
| draft-ietf-jmap-refplus | JMAP Enhanced Result References | |
| draft-ietf-jmap-rest | JMAP REST Mapping | |
| draft-ietf-jmap-smime-sender-extensions | JMAP extension for S/MIME signing and encryption | |
| draft-ietf-jmap-tasks | JMAP for Tasks |