This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

1(*--------------------------------------------------------------------------- 2 Copyright (c) 2025 Anil Madhavapeddy. All rights reserved. 3 SPDX-License-Identifier: ISC 4 ---------------------------------------------------------------------------*) 5 6(** JMAP capability types as defined in RFC 8620 Section 2 7 8 @canonical Jmap.Proto.Capability *) 9 10(** {1 Standard Capability URIs} *) 11 12val core : string 13(** [urn:ietf:params:jmap:core] - Core JMAP capability (RFC 8620) *) 14 15val mail : string 16(** [urn:ietf:params:jmap:mail] - Mail capability (RFC 8621) *) 17 18val submission : string 19(** [urn:ietf:params:jmap:submission] - Email submission capability (RFC 8621) *) 20 21val vacation_response : string 22(** [urn:ietf:params:jmap:vacationresponse] - Vacation response capability (RFC 8621) *) 23 24(** {1 Core Capability Object} *) 25 26(** Core capability limits and configuration per RFC 8620 Section 2. *) 27module Core : sig 28 type t = { 29 max_size_upload : int64; 30 (** Maximum size in octets for a single blob upload. *) 31 max_concurrent_upload : int; 32 (** Maximum number of concurrent upload requests. *) 33 max_size_request : int64; 34 (** Maximum size in octets of a single request. *) 35 max_concurrent_requests : int; 36 (** Maximum number of concurrent requests. *) 37 max_calls_in_request : int; 38 (** Maximum number of method calls in a single request. *) 39 max_objects_in_get : int; 40 (** Maximum number of objects in a single /get request. *) 41 max_objects_in_set : int; 42 (** Maximum number of objects in a single /set request. *) 43 collation_algorithms : string list; 44 (** Supported collation algorithms for sorting. *) 45 } 46 47 val create : 48 max_size_upload:int64 -> 49 max_concurrent_upload:int -> 50 max_size_request:int64 -> 51 max_concurrent_requests:int -> 52 max_calls_in_request:int -> 53 max_objects_in_get:int -> 54 max_objects_in_set:int -> 55 collation_algorithms:string list -> 56 t 57 58 val max_size_upload : t -> int64 59 val max_concurrent_upload : t -> int 60 val max_size_request : t -> int64 61 val max_concurrent_requests : t -> int 62 val max_calls_in_request : t -> int 63 val max_objects_in_get : t -> int 64 val max_objects_in_set : t -> int 65 val collation_algorithms : t -> string list 66 67 val jsont : t Jsont.t 68 (** JSON codec for core capability. *) 69end 70 71(** {1 Mail Capability Object} *) 72 73(** Mail capability configuration per RFC 8621. *) 74module Mail : sig 75 type t = { 76 max_mailboxes_per_email : int64 option; 77 (** Maximum number of mailboxes an email can belong to. *) 78 max_mailbox_depth : int64 option; 79 (** Maximum depth of mailbox hierarchy. *) 80 max_size_mailbox_name : int64; 81 (** Maximum size of a mailbox name in octets. *) 82 max_size_attachments_per_email : int64; 83 (** Maximum total size of attachments per email. *) 84 email_query_sort_options : string list; 85 (** Supported sort options for Email/query. *) 86 may_create_top_level_mailbox : bool; 87 (** Whether the user may create top-level mailboxes. *) 88 } 89 90 val create : 91 ?max_mailboxes_per_email:int64 -> 92 ?max_mailbox_depth:int64 -> 93 max_size_mailbox_name:int64 -> 94 max_size_attachments_per_email:int64 -> 95 email_query_sort_options:string list -> 96 may_create_top_level_mailbox:bool -> 97 unit -> 98 t 99 100 val max_mailboxes_per_email : t -> int64 option 101 val max_mailbox_depth : t -> int64 option 102 val max_size_mailbox_name : t -> int64 103 val max_size_attachments_per_email : t -> int64 104 val email_query_sort_options : t -> string list 105 val may_create_top_level_mailbox : t -> bool 106 107 val jsont : t Jsont.t 108end 109 110(** {1 Submission Capability Object} *) 111 112module Submission : sig 113 type t = { 114 max_delayed_send : int64; 115 (** Maximum delay in seconds for delayed sending (0 = not supported). *) 116 submission_extensions : (string * string list) list; 117 (** SMTP extensions supported. *) 118 } 119 120 val create : 121 max_delayed_send:int64 -> 122 submission_extensions:(string * string list) list -> 123 t 124 125 val max_delayed_send : t -> int64 126 val submission_extensions : t -> (string * string list) list 127 128 val jsont : t Jsont.t 129end 130 131(** {1 Generic Capability Handling} *) 132 133(** A capability value that can be either a known type or unknown JSON. *) 134type capability = 135 | Core of Core.t 136 | Mail of Mail.t 137 | Submission of Submission.t 138 | Vacation_response (* No configuration *) 139 | Unknown of Jsont.json 140 141val capability_of_json : string -> Jsont.json -> capability 142(** [capability_of_json uri json] parses a capability from its URI and JSON value. *) 143 144val capability_to_json : string * capability -> string * Jsont.json 145(** [capability_to_json (uri, cap)] encodes a capability to URI and JSON. *)