(** JMAP Session and Account Types *) (** Account object *) module Account : sig type t = { name : string; is_personal : bool; is_read_only : bool; account_capabilities : (string * Ezjsonm.value) list; } (** Accessors *) val name : t -> string val is_personal : t -> bool val is_read_only : t -> bool val account_capabilities : t -> (string * Ezjsonm.value) list (** Constructor *) val v : name:string -> is_personal:bool -> is_read_only:bool -> account_capabilities:(string * Ezjsonm.value) list -> t (** Parse from JSON *) val of_json : Ezjsonm.value -> t end (** Session object *) type t = { capabilities : (string * Ezjsonm.value) list; accounts : (Jmap_id.t * Account.t) list; primary_accounts : (string * Jmap_id.t) list; username : string; api_url : string; download_url : string; upload_url : string; event_source_url : string; state : string; } (** Accessors *) val capabilities : t -> (string * Ezjsonm.value) list val accounts : t -> (Jmap_id.t * Account.t) list val primary_accounts : t -> (string * Jmap_id.t) list val username : t -> string val api_url : t -> string val download_url : t -> string val upload_url : t -> string val event_source_url : t -> string val state : t -> string (** Constructor *) val v : capabilities:(string * Ezjsonm.value) list -> accounts:(Jmap_id.t * Account.t) list -> primary_accounts:(string * Jmap_id.t) list -> username:string -> api_url:string -> download_url:string -> upload_url:string -> event_source_url:string -> state:string -> t (** Parser submodule *) module Parser : sig (** Parse session from JSON *) val of_json : Ezjsonm.value -> t val of_string : string -> t val of_channel : in_channel -> t end