···77 try
88 let account_id = Jmap_unix.Session_utils.get_primary_mail_account session in
99 printf "Using account: %s\n" account_id;
1010- printf "Building JMAP request using library functions...\n";
1010+ printf "Building JMAP request using type-safe capabilities...\n";
11111212 (* Create sort comparator using proper JSON generation *)
1313 let sort_comparator = Jmap.Methods.Comparator.v
···17171818 (* Build Email/query request using Jmap.Methods functions *)
1919 let builder = Jmap_unix.build ctx in
2020- let builder = Jmap_unix.using builder [Jmap.Protocol.capability_core; Jmap.Protocol.capability_mail] in
2020+ let builder = Jmap_unix.using builder [`Core; `Mail] in
21212222 (* Create Email/query arguments without position parameter *)
2323 let query_args = Jmap.Methods.Query_args.v
+7-7
jmap/jmap-unix/jmap_unix.ml
···244244245245let build ctx = {
246246 ctx;
247247- using = [Jmap.Protocol.capability_core];
247247+ using = [Jmap.Protocol.Capability.to_string `Core];
248248 method_calls = [];
249249}
250250251251let using builder capabilities =
252252- builder.using <- capabilities;
252252+ builder.using <- Jmap.Protocol.Capability.to_strings capabilities;
253253 builder
254254255255let add_method_call builder method_name arguments method_call_id =
···606606 | None -> `Null);
607607 ] in
608608 let builder = build ctx
609609- |> fun b -> using b [Jmap.Protocol.capability_core; Jmap.Protocol.capability_mail]
609609+ |> fun b -> using b [`Core; `Mail]
610610 |> fun b -> add_method_call b "Email/get" args "get-1"
611611 in
612612 match execute env builder with
···632632 ("position", match position with Some p -> `Int p | None -> `Null);
633633 ] in
634634 let builder = build ctx
635635- |> fun b -> using b [Jmap.Protocol.capability_core; Jmap.Protocol.capability_mail]
635635+ |> fun b -> using b [`Core; `Mail]
636636 |> fun b -> add_method_call b "Email/query" args "query-1"
637637 in
638638 match execute env builder with
···656656 ) email_ids));
657657 ] in
658658 let builder = build ctx
659659- |> fun b -> using b [Jmap.Protocol.capability_core; Jmap.Protocol.capability_mail]
659659+ |> fun b -> using b [`Core; `Mail]
660660 |> fun b -> add_method_call b "Email/set" args "set-1"
661661 in
662662 match execute env builder with
···691691 | None -> `Null);
692692 ] in
693693 let builder = build ctx
694694- |> fun b -> using b [Jmap.Protocol.capability_core; Jmap.Protocol.capability_mail]
694694+ |> fun b -> using b [`Core; `Mail]
695695 |> fun b -> add_method_call b "Email/import" args "import-1"
696696 in
697697 match execute env builder with
···758758 let open Jmap.Protocol.Session.Session in
759759 let primary_accs = primary_accounts session in
760760 try
761761- Hashtbl.find primary_accs Jmap.Protocol.capability_mail
761761+ Hashtbl.find primary_accs (Jmap.Protocol.Capability.to_string `Mail)
762762 with
763763 | Not_found ->
764764 let accounts = accounts session in
+5-5
jmap/jmap-unix/jmap_unix.mli
···8686*)
8787val build : context -> request_builder
88888989-(** Set the using capabilities for a request.
8989+(** Specify capabilities to use with type-safe variants.
9090 @param builder The request builder.
9191- @param capabilities List of capability URIs to use.
9191+ @param capabilities List of capability variants to use.
9292 @return The updated request builder.
9393*)
9494-val using : request_builder -> string list -> request_builder
9494+val using : request_builder -> Jmap.Protocol.Capability.t list -> request_builder
95959696(** Add a method call to a request builder.
9797 @param builder The request builder.
···292292 type t = request_builder
293293294294 (** Create a new request builder with specified capabilities.
295295- @param using List of capability URIs to use in the request
295295+ @param using List of capability variants to use in the request
296296 @return A new request builder with the specified capabilities *)
297297- val create : using:string list -> context -> t
297297+ val create : using:Jmap.Protocol.Capability.t list -> context -> t
298298299299 (** Add a query method call to the request builder.
300300 @param t The request builder