this repo has no description
1# JMAP OCaml Libraries
2
3This project implements OCaml libraries for the JMAP protocol, following the specifications in RFC 8620 (Core) and RFC 8621 (Mail).
4
5## Project Structure
6
7The code is organized into three main libraries:
8
91. `jmap` - Core JMAP protocol (RFC 8620)
10 - Basic data types
11 - Error handling
12 - Wire protocol
13 - Session handling
14 - Standard methods (get, set, changes, query)
15 - Binary data handling
16 - Push notifications
17
182. `jmap-unix` - Unix-specific implementation of JMAP
19 - HTTP connections to JMAP endpoints
20 - Authentication
21 - Session discovery
22 - Request/response handling
23 - Blob upload/download
24 - Unix-specific I/O
25
263. `jmap-email` - JMAP Mail extension (RFC 8621)
27 - Email specific types
28 - Mailbox handling
29 - Thread management
30 - Search snippet functionality
31 - Identity management
32 - Email submission
33 - Vacation response
34
35## Usage
36
37The libraries are designed to be used together. For example:
38
39```ocaml
40(* Using the core JMAP protocol library *)
41open Jmap
42open Jmap.Types
43open Jmap.Wire
44
45(* Using the Unix implementation *)
46open Jmap_unix
47
48(* Using the JMAP Email extension library *)
49open Jmap_email
50open Jmap_email.Types
51
52(* Example: Connecting to a JMAP server *)
53let connect_to_server () =
54 let credentials = Jmap_unix.Basic("username", "password") in
55 let (ctx, session) = Jmap_unix.quick_connect ~host:"jmap.example.com" ~username:"user" ~password:"pass" in
56 ...
57```
58
59## Building
60
61```sh
62# Build
63opam exec -- dune build @check
64
65# Generate documentation
66opam exec -- dune build @doc
67```
68
69## References
70
71- [RFC 8620: The JSON Meta Application Protocol (JMAP)](https://www.rfc-editor.org/rfc/rfc8620.html)
72- [RFC 8621: The JSON Meta Application Protocol (JMAP) for Mail](https://www.rfc-editor.org/rfc/rfc8621.html)