(** JMAP JSON Parser Utilities *) (** Helper functions for working with ezjsonm values *) module Helpers : sig (** Expect a JSON object and return field list *) val expect_object : Ezjsonm.value -> (string * Ezjsonm.value) list (** Expect a JSON array and return element list *) val expect_array : Ezjsonm.value -> Ezjsonm.value list (** Expect a JSON string *) val expect_string : Ezjsonm.value -> string (** Expect a JSON integer *) val expect_int : Ezjsonm.value -> int (** Expect a JSON boolean *) val expect_bool : Ezjsonm.value -> bool (** Find optional field in object *) val find_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value option (** Require field to be present *) val require_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value (** Get optional string field *) val get_string_opt : string -> (string * Ezjsonm.value) list -> string option (** Get required string field *) val get_string : string -> (string * Ezjsonm.value) list -> string (** Get optional boolean field with default *) val get_bool_opt : string -> (string * Ezjsonm.value) list -> bool -> bool (** Get required boolean field *) val get_bool : string -> (string * Ezjsonm.value) list -> bool (** Get optional int field *) val get_int_opt : string -> (string * Ezjsonm.value) list -> int option (** Get required int field *) val get_int : string -> (string * Ezjsonm.value) list -> int (** Parse a map with string keys *) val parse_map : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> (string * 'a) list (** Parse an array *) val parse_array : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list (** Parse optional array (null or array) *) val parse_array_opt : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list option end (** Parse JMAP Request *) val parse_request : Ezjsonm.value -> Jmap_request.t (** Parse JMAP Response *) val parse_response : Ezjsonm.value -> Jmap_response.t (** Parse JMAP Session *) val parse_session : Ezjsonm.value -> Jmap_session.t