zm-ruby-client 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -0
  3. data/README.md +128 -27
  4. data/VERSION +1 -1
  5. data/lib/zm/client/account/account.rb +12 -19
  6. data/lib/zm/client/account/account_aliases_collection.rb +6 -4
  7. data/lib/zm/client/account/account_dls_membership_collection.rb +4 -3
  8. data/lib/zm/client/account/account_dls_owner_collection.rb +3 -2
  9. data/lib/zm/client/account/account_jsns_builder.rb +10 -10
  10. data/lib/zm/client/account/accounts_collection.rb +27 -16
  11. data/lib/zm/client/ace/ace.rb +3 -6
  12. data/lib/zm/client/ace/ace_jsns_builder.rb +6 -6
  13. data/lib/zm/client/appointment/appointment.rb +32 -14
  14. data/lib/zm/client/appointment/appointment_jsns_builder.rb +5 -5
  15. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +6 -1
  16. data/lib/zm/client/appointment/appointments_collection.rb +12 -9
  17. data/lib/zm/client/backup/backup.rb +5 -2
  18. data/lib/zm/client/backup/backups_collection.rb +3 -2
  19. data/lib/zm/client/base/account_objects_collection.rb +1 -0
  20. data/lib/zm/client/base/account_search_objects_collection.rb +6 -6
  21. data/lib/zm/client/base/admin_objects_collection.rb +60 -7
  22. data/lib/zm/client/base/base_account_jsns_builder.rb +89 -87
  23. data/lib/zm/client/base/base_jsns_builder.rb +3 -3
  24. data/lib/zm/client/base/base_jsns_initializer.rb +20 -15
  25. data/lib/zm/client/base/mailbox_infos_collection.rb +92 -90
  26. data/lib/zm/client/base/mailbox_object.rb +49 -160
  27. data/lib/zm/client/base/mailbox_prefs_collection.rb +54 -52
  28. data/lib/zm/client/base/object.rb +19 -2
  29. data/lib/zm/client/base/objects_collection.rb +10 -10
  30. data/lib/zm/client/base/zimbra_attribute.rb +28 -42
  31. data/lib/zm/client/base/zimbra_attributes_collection.rb +38 -24
  32. data/lib/zm/client/{cluster/batch_request.rb → batch_request.rb} +1 -1
  33. data/lib/zm/client/cluster/cluster.rb +24 -61
  34. data/lib/zm/client/cluster/cluster_config.rb +35 -15
  35. data/lib/zm/client/contact/contact.rb +15 -13
  36. data/lib/zm/client/contact/contact_jsns_builder.rb +9 -6
  37. data/lib/zm/client/contact/contact_jsns_initializer.rb +2 -2
  38. data/lib/zm/client/contact/contact_member.rb +3 -3
  39. data/lib/zm/client/contact/contact_members_collection.rb +3 -3
  40. data/lib/zm/client/contact/contacts_builder.rb +1 -1
  41. data/lib/zm/client/contact/contacts_collection.rb +2 -2
  42. data/lib/zm/client/contact/group_contact_jsns_builder.rb +18 -14
  43. data/lib/zm/client/contact/mod_group_contact.rb +12 -8
  44. data/lib/zm/client/cos/cos.rb +15 -31
  45. data/lib/zm/client/cos/cos_jsns_builder.rb +21 -21
  46. data/lib/zm/client/cos/coses_collection.rb +11 -6
  47. data/lib/zm/client/datasource/datasource.rb +3 -9
  48. data/lib/zm/client/datasource/datasource_jsns_builder.rb +4 -4
  49. data/lib/zm/client/datasource/datasources_builder.rb +1 -1
  50. data/lib/zm/client/datasource/datasources_collection.rb +2 -2
  51. data/lib/zm/client/deprecated_constants.rb +36 -0
  52. data/lib/zm/client/distributionlist/distributionlist.rb +15 -47
  53. data/lib/zm/client/distributionlist/distributionlist_aces_collection.rb +4 -4
  54. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +7 -5
  55. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +29 -41
  56. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +14 -3
  57. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +14 -10
  58. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +13 -13
  59. data/lib/zm/client/distributionlist/distributionlists_collection.rb +15 -7
  60. data/lib/zm/client/distributionlist/dls_membership_collection.rb +8 -6
  61. data/lib/zm/client/document/document.rb +5 -11
  62. data/lib/zm/client/document/document_jsns_builder.rb +2 -2
  63. data/lib/zm/client/document/documents_collection.rb +4 -4
  64. data/lib/zm/client/domain/domain.rb +8 -25
  65. data/lib/zm/client/domain/domain_jsns_builder.rb +13 -13
  66. data/lib/zm/client/domain/domains_collection.rb +13 -6
  67. data/lib/zm/client/filter_rules/filter_rules_collection.rb +1 -1
  68. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +1 -1
  69. data/lib/zm/client/folder/folder.rb +36 -22
  70. data/lib/zm/client/folder/folder_default.rb +39 -0
  71. data/lib/zm/client/folder/folder_grant.rb +1 -1
  72. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +3 -3
  73. data/lib/zm/client/folder/folder_grants_collection.rb +1 -1
  74. data/lib/zm/client/folder/folder_jsns_builder.rb +12 -12
  75. data/lib/zm/client/folder/folder_jsns_initializer.rb +22 -23
  76. data/lib/zm/client/folder/folder_retention_policies_collection.rb +6 -2
  77. data/lib/zm/client/folder/folder_view.rb +15 -0
  78. data/lib/zm/client/folder/folders_jsns_builder.rb +1 -1
  79. data/lib/zm/client/folder/mod_document_folder.rb +16 -12
  80. data/lib/zm/client/identity/identities_collection.rb +1 -1
  81. data/lib/zm/client/identity/identity.rb +3 -9
  82. data/lib/zm/client/identity/identity_jsns_builder.rb +8 -8
  83. data/lib/zm/client/{base/ldap_filter.rb → ldap_filter.rb} +1 -1
  84. data/lib/zm/client/license/licenses_collection.rb +1 -1
  85. data/lib/zm/client/mailbox/mailbox_item_concern.rb +0 -2
  86. data/lib/zm/client/message/message.rb +14 -19
  87. data/lib/zm/client/message/message_attachments_collection.rb +39 -0
  88. data/lib/zm/client/message/message_flags_collection.rb +130 -0
  89. data/lib/zm/client/message/message_jsns_builder.rb +4 -8
  90. data/lib/zm/client/message/message_jsns_initializer.rb +4 -4
  91. data/lib/zm/client/message/message_recipients.rb +19 -43
  92. data/lib/zm/client/message/messages_collection.rb +20 -4
  93. data/lib/zm/client/mountpoint/{mountpoint.rb → mount_point.rb} +4 -10
  94. data/lib/zm/client/mountpoint/{mountpoint_jsns_builder.rb → mount_point_jsns_builder.rb} +3 -3
  95. data/lib/zm/client/mountpoint/{mountpoint_jsns_initializer.rb → mount_point_jsns_initializer.rb} +1 -1
  96. data/lib/zm/client/mountpoint/{mountpoints_builder.rb → mount_points_builder.rb} +1 -1
  97. data/lib/zm/client/mta_queue/mta_queue.rb +4 -16
  98. data/lib/zm/client/mta_queue/mta_queue_action.rb +12 -0
  99. data/lib/zm/client/mta_queue/mta_queue_jsns_builder.rb +7 -7
  100. data/lib/zm/client/mta_queue/mta_queue_name.rb +14 -0
  101. data/lib/zm/client/mta_queue/mta_queues_collection.rb +4 -3
  102. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +1 -0
  103. data/lib/zm/client/recipient.rb +21 -0
  104. data/lib/zm/client/{common/recipients.rb → recipients.rb} +0 -16
  105. data/lib/zm/client/resource/resource.rb +3 -7
  106. data/lib/zm/client/resource/resource_jsns_builder.rb +13 -13
  107. data/lib/zm/client/resource/resources_collection.rb +20 -7
  108. data/lib/zm/client/search_folder/search_folder.rb +4 -11
  109. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +6 -6
  110. data/lib/zm/client/search_folder/search_folders_collection.rb +1 -1
  111. data/lib/zm/client/server/server.rb +16 -22
  112. data/lib/zm/client/server/server_services.rb +26 -0
  113. data/lib/zm/client/server/servers_collection.rb +6 -6
  114. data/lib/zm/client/share/share.rb +2 -5
  115. data/lib/zm/client/share/shares_builder.rb +1 -1
  116. data/lib/zm/client/share/shares_collection.rb +5 -4
  117. data/lib/zm/client/signature/signature.rb +7 -13
  118. data/lib/zm/client/signature/signature_jsns_builder.rb +13 -13
  119. data/lib/zm/client/signature/signature_jsns_initializer.rb +2 -2
  120. data/lib/zm/client/signature/signatures_collection.rb +1 -1
  121. data/lib/zm/client/tag/account_object_tags_collection.rb +45 -47
  122. data/lib/zm/client/tag/tag.rb +3 -9
  123. data/lib/zm/client/tag/tag_jsns_builder.rb +3 -3
  124. data/lib/zm/client/tag/tags_builder.rb +1 -1
  125. data/lib/zm/client/tag/tags_collection.rb +2 -2
  126. data/lib/zm/client/task/task.rb +2 -2
  127. data/lib/zm/client/task/tasks_collection.rb +2 -2
  128. data/lib/zm/client/token.rb +4 -1
  129. data/lib/zm/client/upload.rb +179 -1
  130. data/lib/zm/client/{common/utils.rb → utils.rb} +6 -3
  131. data/lib/zm/client/zm_logger.rb +1 -1
  132. data/lib/zm/client.rb +227 -10
  133. data/lib/zm/connector/network_error_handler.rb +18 -0
  134. data/lib/zm/{client/connector → connector}/rest_connector.rb +46 -40
  135. data/lib/zm/{client/connector/soap_account.rb → connector/soap_account_connector.rb} +15 -17
  136. data/lib/zm/{client/connector/soap_admin.rb → connector/soap_admin_connector.rb} +3 -5
  137. data/lib/zm/connector/soap_base_connector.rb +115 -0
  138. data/lib/zm/connector.rb +13 -0
  139. data/lib/zm/error/auth_error.rb +8 -0
  140. data/lib/zm/error/connection_error.rb +8 -0
  141. data/lib/zm/error/rest_error.rb +8 -0
  142. data/lib/zm/{client/connector → error}/soap_error.rb +1 -10
  143. data/lib/zm/error/zm_error.rb +8 -0
  144. data/lib/zm/error.rb +11 -0
  145. data/lib/zm/relationship/has_many.rb +22 -0
  146. data/lib/zm/relationship/jsns_builder.rb +21 -0
  147. data/lib/zm/relationship/relationship.rb +113 -0
  148. data/lib/zm/relationship/schema.rb +32 -0
  149. data/lib/zm/relationship.rb +5 -0
  150. data/lib/zm/{client/soap_request → soap_request}/request_methods_admin.rb +11 -5
  151. data/lib/zm/{client/soap_request → soap_request}/request_methods_mailbox.rb +1 -1
  152. data/lib/zm/{client/soap_request/account_soap_constants.rb → soap_request/soap_account_constants.rb} +1 -1
  153. data/lib/zm/{client/soap_request/admin_soap_constants.rb → soap_request/soap_admin_constants.rb} +1 -1
  154. data/lib/zm/{client/soap_request → soap_request}/soap_constants.rb +1 -1
  155. data/lib/zm/{client/soap_request → soap_request}/soap_context.rb +13 -5
  156. data/lib/zm/{client/soap_request → soap_request}/soap_element.rb +1 -1
  157. data/lib/zm/{client/soap_request/mail_soap_constants.rb → soap_request/soap_mail_constants.rb} +1 -1
  158. data/lib/zm/soap_request.rb +14 -0
  159. data/lib/zm/support/cache/entry.rb +3 -3
  160. data/lib/zm/support/cache/file_store.rb +4 -6
  161. data/lib/zm/support/cache/null_store.rb +2 -4
  162. data/lib/zm/support/cache/store.rb +17 -9
  163. data/lib/zm/support/cache.rb +13 -8
  164. data/lib/zm/support.rb +7 -0
  165. data/lib/zm/{modules → utils}/belongs_to_folder.rb +1 -1
  166. data/lib/zm/{modules → utils}/belongs_to_tag.rb +2 -2
  167. data/lib/zm/utils/content_part.rb +9 -0
  168. data/lib/zm/utils/content_type.rb +11 -0
  169. data/lib/zm/{modules → utils}/has_soap_admin_connector.rb +1 -1
  170. data/lib/zm/utils/inspector.rb +26 -0
  171. data/lib/zm/utils/log_filter.rb +30 -0
  172. data/lib/zm/utils/missing_method_static_collection.rb +17 -0
  173. data/lib/zm/utils/regex.rb +11 -0
  174. data/lib/zm/utils/search_utils.rb +13 -0
  175. data/lib/zm/utils.rb +16 -0
  176. data/lib/zm-ruby-client.rb +12 -3
  177. data/sig/zm/client/admin_objects.rbs +261 -0
  178. data/sig/zm/client/base.rbs +191 -0
  179. data/sig/zm/client/cluster.rbs +152 -0
  180. data/sig/zm/client/mailbox.rbs +766 -0
  181. data/sig/zm/error.rbs +23 -0
  182. metadata +99 -91
  183. data/.gitignore +0 -59
  184. data/.rubocop.yml +0 -6
  185. data/.ruby-version +0 -1
  186. data/Gemfile +0 -11
  187. data/SECURITY.md +0 -21
  188. data/bin/console +0 -11
  189. data/lib/zm/client/account.rb +0 -9
  190. data/lib/zm/client/ace.rb +0 -7
  191. data/lib/zm/client/appointment.rb +0 -7
  192. data/lib/zm/client/backup.rb +0 -6
  193. data/lib/zm/client/base.rb +0 -21
  194. data/lib/zm/client/cluster.rb +0 -4
  195. data/lib/zm/client/common/message.rb +0 -10
  196. data/lib/zm/client/common.rb +0 -5
  197. data/lib/zm/client/connector/soap_base.rb +0 -104
  198. data/lib/zm/client/constant.rb +0 -229
  199. data/lib/zm/client/contact.rb +0 -11
  200. data/lib/zm/client/cos.rb +0 -10
  201. data/lib/zm/client/datasource.rb +0 -7
  202. data/lib/zm/client/distributionlist.rb +0 -8
  203. data/lib/zm/client/document.rb +0 -7
  204. data/lib/zm/client/domain.rb +0 -10
  205. data/lib/zm/client/filter_rule.rb +0 -7
  206. data/lib/zm/client/folder.rb +0 -14
  207. data/lib/zm/client/identity.rb +0 -7
  208. data/lib/zm/client/license.rb +0 -5
  209. data/lib/zm/client/message/attachments_collection.rb +0 -55
  210. data/lib/zm/client/message/message_flags.rb +0 -115
  211. data/lib/zm/client/message.rb +0 -10
  212. data/lib/zm/client/mountpoint.rb +0 -7
  213. data/lib/zm/client/mta_queue.rb +0 -7
  214. data/lib/zm/client/mta_queue_item.rb +0 -6
  215. data/lib/zm/client/resource.rb +0 -7
  216. data/lib/zm/client/search_folder.rb +0 -7
  217. data/lib/zm/client/server.rb +0 -7
  218. data/lib/zm/client/share.rb +0 -7
  219. data/lib/zm/client/signature.rb +0 -7
  220. data/lib/zm/client/soap_request.rb +0 -11
  221. data/lib/zm/client/tag.rb +0 -8
  222. data/lib/zm/client/task.rb +0 -6
  223. data/lib/zm/client/upload/upload.rb +0 -160
  224. data/lib/zm/modules/base.rb +0 -9
  225. data/lib/zm/modules/common/zimbra-attrs.json +0 -58
  226. data/lib/zm/modules/inspector.rb +0 -24
  227. data/lib/zm/modules/missing_method_static_collection.rb +0 -13
  228. data/lib/zm/modules/zm_model.rb +0 -43
  229. data/zm-ruby-client.gemspec +0 -27
  230. /data/lib/zm/client/mountpoint/{mountpoints_collection.rb → mount_points_collection.rb} +0 -0
@@ -0,0 +1,766 @@
1
+ module Zm
2
+ module SoapRequest
3
+ # CRUD shared by mailbox items, the request goes through the mailbox SOAP connector.
4
+ module RequestMethodsMailbox
5
+ def modify!: () -> true
6
+ def update!: (Hash[Symbol, untyped] hash) -> bool
7
+ def rename!: (String new_name) -> (String | false)
8
+ # false when the item has no id.
9
+ def delete!: () -> untyped
10
+
11
+ def build_create: () -> SoapElement
12
+ def build_modify: () -> SoapElement
13
+ def build_rename: (String new_name) -> SoapElement
14
+ def build_delete: () -> SoapElement
15
+ end
16
+ end
17
+
18
+ module Utils
19
+ module BelongsToFolder
20
+ def folder=: (Client::Folder? folder) -> void
21
+ def folder: () -> Client::Folder?
22
+ def folder!: () -> Client::Folder?
23
+ # nil when the item is already in this folder.
24
+ def move!: (Client::Folder | String new_folder_id) -> String?
25
+ def trash!: () -> untyped
26
+ end
27
+
28
+ module BelongsToTag
29
+ def tags: () -> Client::AccountObjectTagsCollection
30
+ end
31
+ end
32
+
33
+ module Client
34
+ # Mailbox item ids may be prefixed by the mailbox id ("mailbox_id:item_id").
35
+ module MailboxItemConcern
36
+ def id=: (String | Integer remote_id) -> void
37
+ def id: () -> String?
38
+ def mailbox_id: () -> String?
39
+ def l=: ((String | Integer)? remote_l) -> void
40
+ def l: () -> String?
41
+ end
42
+
43
+ class MailboxItemID < Data
44
+ attr_reader item_id: String
45
+ attr_reader mailbox_id: String?
46
+ end
47
+
48
+ class AccountObjectTagsCollection
49
+ def initialize: (untyped parent) -> void
50
+
51
+ def all: () -> Array[String]
52
+ # Returns the new tag list (comma separated) or false when nothing changed.
53
+ def add!: (*(String | Tag | Array[String | Tag]) new_tags) -> (String | false)
54
+ def remove!: (*(String | Tag | Array[String | Tag]) tag_names) -> (String | false)
55
+ end
56
+
57
+ # ##########################################################################
58
+ # Messages
59
+ # ##########################################################################
60
+
61
+ class Message < Base::Object
62
+ include Utils::BelongsToFolder
63
+ include Utils::BelongsToTag
64
+ include SoapRequest::RequestMethodsMailbox
65
+ include MailboxItemConcern
66
+
67
+ attr_accessor d: Integer?
68
+ attr_accessor f: String?
69
+ attr_accessor su: String?
70
+ attr_accessor fr: String?
71
+ attr_accessor autoSendTime: Integer?
72
+ attr_accessor mid: String?
73
+ attr_accessor idnt: String?
74
+ attr_accessor tn: String?
75
+ attr_accessor subject: String
76
+ attr_accessor s: Integer?
77
+ attr_reader recipients: MessageRecipients
78
+ attr_reader attachments: MessageAttachmentsCollection
79
+ attr_reader body: Message::Body
80
+ alias size s
81
+
82
+ def download: (String dest_file_path, ?fmt: String) -> nil
83
+ def read: () -> String
84
+ def date: () -> Time
85
+ def flags: () -> MessageFlagsCollection
86
+
87
+ # Only l, rgb, color, f and tn can be updated.
88
+ def update!: (Hash[Symbol, untyped] attrs) -> untyped
89
+ def spam!: () -> untyped
90
+ def unspam!: () -> untyped
91
+ def send!: () -> untyped
92
+
93
+ def create!: (*untyped) -> bot
94
+ def modify!: (*untyped) -> bot
95
+ def rename!: (*untyped) -> bot
96
+
97
+ class Body
98
+ attr_accessor text: String?
99
+ attr_accessor html: String?
100
+ end
101
+ end
102
+
103
+ class MessagesCollection < Base::AccountSearchObjectsCollection[Message]
104
+ # With secure: true, errors raised by the block are logged and the search stops on a request error.
105
+ def find_each: (?offset: Integer, ?limit: Integer, ?secure: bool) { (Message) -> void } -> void
106
+ end
107
+
108
+ class Recipient
109
+ FROM: Symbol
110
+ TO: Symbol
111
+ CC: Symbol
112
+ BCC: Symbol
113
+
114
+ attr_accessor field: Symbol
115
+ attr_accessor email: String
116
+ attr_accessor display_name: String?
117
+
118
+ def initialize: (Symbol | String field, String email, ?String? display_name) -> void
119
+ end
120
+
121
+ class MessageRecipients
122
+ attr_reader all: Array[Recipient]
123
+
124
+ def initialize: () -> void
125
+
126
+ def add: (untyped recipient) -> Array[Recipient]?
127
+ def to: () -> Array[Recipient]
128
+ def cc: () -> Array[Recipient]
129
+ def bcc: () -> Array[Recipient]
130
+ def from: () -> Array[Recipient]
131
+ end
132
+
133
+ class MessageFlagsCollection
134
+ def initialize: (Message parent) -> void
135
+
136
+ def all: () -> Array[String]
137
+
138
+ def unread?: () -> bool
139
+ def flagged?: () -> bool
140
+ def attachment?: () -> bool
141
+ def replied: () -> bool
142
+ def sent_by_me?: () -> bool
143
+ def forwarded?: () -> bool
144
+ def calendar_invite?: () -> bool
145
+ def draft?: () -> bool
146
+ def imap_deleted?: () -> bool
147
+ def notification?: () -> bool
148
+ def urgent?: () -> bool
149
+ def low_priority?: () -> bool
150
+ def priority?: () -> bool
151
+
152
+ def unread!: () -> untyped
153
+ def read!: () -> untyped
154
+ def unflag!: () -> untyped
155
+ def flag!: () -> untyped
156
+ def build_unread: () -> SoapRequest::SoapElement
157
+ def build_read: () -> SoapRequest::SoapElement
158
+ def build_unflag: () -> SoapRequest::SoapElement
159
+ def build_flag: () -> SoapRequest::SoapElement
160
+ end
161
+
162
+ class MessageAttachmentsCollection
163
+ def all: () -> Array[Attachment]
164
+ def add: (Attachment attachment) -> Array[Attachment]?
165
+ end
166
+
167
+ class Attachment
168
+ attr_accessor aid: String?
169
+ attr_accessor part: String?
170
+ attr_accessor mid: String?
171
+ attr_accessor ct: String?
172
+ attr_accessor s: Integer?
173
+ attr_accessor filename: String?
174
+ attr_accessor ci: String?
175
+ attr_accessor cd: String?
176
+
177
+ def download: (String dest_file_path) -> nil
178
+ def account: () -> Account
179
+ end
180
+
181
+ # ##########################################################################
182
+ # Folders
183
+ # ##########################################################################
184
+
185
+ class Folder < Base::Object
186
+ include Utils::BelongsToFolder
187
+ include SoapRequest::RequestMethodsMailbox
188
+ include MailboxItemConcern
189
+
190
+ attr_accessor type: Symbol | String
191
+ attr_accessor uuid: String?
192
+ attr_accessor absFolderPath: String?
193
+ attr_accessor url: String?
194
+ attr_accessor luuid: String?
195
+ attr_accessor f: String?
196
+ attr_accessor view: String?
197
+ attr_accessor rev: Integer?
198
+ attr_accessor ms: Integer?
199
+ attr_accessor webOfflineSyncDays: Integer?
200
+ attr_accessor activesyncdisabled: bool?
201
+ attr_accessor n: Integer?
202
+ attr_accessor s: Integer?
203
+ attr_accessor i4ms: Integer?
204
+ attr_accessor i4next: Integer?
205
+ attr_accessor zid: String?
206
+ attr_accessor rid: String?
207
+ attr_accessor ruuid: String?
208
+ attr_accessor owner: String?
209
+ attr_accessor reminder: bool?
210
+ attr_accessor itemCount: Integer?
211
+ attr_accessor broken: bool?
212
+ attr_accessor deletable: bool?
213
+ attr_accessor color: Integer?
214
+ attr_accessor rgb: String?
215
+ attr_accessor fb: String?
216
+ attr_accessor folders: Array[Folder]
217
+ alias nb_messages n
218
+ alias nb_items n
219
+ alias size s
220
+
221
+ # Parent folder id, the root folder id when unknown.
222
+ def l: () -> String
223
+ alias folder_id l
224
+
225
+ def grants: () -> FolderGrantsCollection
226
+ alias acl grants
227
+ def retention_policies: () -> FolderRetentionPoliciesCollection
228
+
229
+ def is_immutable?: () -> bool
230
+ def to_query: () -> String
231
+ def create!: () -> String?
232
+ def color!: () -> true
233
+ def reload!: () -> true
234
+ def empty?: () -> bool
235
+ # false when the folder was already empty.
236
+ def empty!: () -> (Integer | false)
237
+ alias clear empty!
238
+ # false for system folders or a folder without id.
239
+ def delete!: () -> untyped
240
+ def remove_flag!: (String pattern) -> bool
241
+
242
+ def add_message: (String eml, ?Integer? d, ?String? f, ?String? tn) -> untyped
243
+ def add_appointments: (String ics) -> untyped
244
+ def add_contacts: (String csv) -> untyped
245
+ def export_contacts: (?csvfmt: String?, ?csvlocale: String?, ?csvsep: String?) -> String?
246
+
247
+ def download: (String dest_file_path, ?fmt: String?) -> nil
248
+ def upload: (String src_file_path, ?fmt: String?, ?resolve: String?) -> String
249
+ end
250
+
251
+ class FoldersCollection < Base::AccountObjectsCollection[Folder]
252
+ attr_accessor view: String?
253
+ attr_accessor tr: untyped
254
+ attr_accessor visible: untyped
255
+ attr_accessor needGranteeName: untyped
256
+ attr_accessor depth: Integer?
257
+
258
+ # Sends a GetFolderRequest and returns the reloaded folder.
259
+ def find: (String | Integer id) -> Folder
260
+ def root: () -> Folder
261
+ def where: (?view: String?, ?tr: untyped) -> self
262
+ def ids: () -> Array[String]
263
+ def clear: () -> void
264
+
265
+ # Restrict all to the folders of one view.
266
+ def message: () -> self
267
+ def contact: () -> self
268
+ def appointment: () -> self
269
+ def task: () -> self
270
+ def document: () -> self
271
+ end
272
+
273
+ class FolderGrant
274
+ GT_USER: String
275
+ GT_GROUP: String
276
+ GT_DOMAIN: String
277
+ GT_PUB: String
278
+ GT_GUEST: String
279
+ GT_KEY: String
280
+
281
+ attr_reader parent: FolderGrantsCollection
282
+ attr_reader folder_id: String?
283
+ attr_accessor zid: String?
284
+ attr_accessor gt: String?
285
+ attr_accessor perm: String?
286
+ attr_accessor d: String?
287
+ attr_accessor expiry: Integer?
288
+ attr_accessor key: String?
289
+
290
+ def initialize: (FolderGrantsCollection parent, String? zid, String? gt, String? perm, String? d) -> void
291
+
292
+ def is_account?: () -> bool
293
+ def is_dom?: () -> bool
294
+ def is_dl?: () -> bool
295
+ def is_public?: () -> bool
296
+ def is_external?: () -> bool
297
+ def is_key?: () -> bool
298
+ def save!: () -> untyped
299
+ def delete!: () -> FolderGrant?
300
+ def to_h: () -> Hash[Symbol, untyped]
301
+ end
302
+
303
+ class FolderGrantsCollection
304
+ attr_reader parent: Folder
305
+ attr_reader all: Array[FolderGrant]
306
+
307
+ def initialize: (Folder parent) -> void
308
+
309
+ def new: (String? zid, String? gt, String? perm, String? d) -> FolderGrant
310
+ def new_from_object: (Account | Resource | DistributionList | Domain item, String perm) -> FolderGrant
311
+ def create: (String? zid, String? gt, String? perm, String? d) -> FolderGrant
312
+ def create_from_object: (Account | Resource | DistributionList | Domain item, String perm) -> FolderGrant
313
+ def add: (FolderGrant fg) -> Array[FolderGrant]
314
+
315
+ # Delegated to all through method_missing.
316
+ def each: () { (FolderGrant) -> void } -> Array[FolderGrant]
317
+ def map: [U] () { (FolderGrant) -> U } -> Array[U]
318
+ def select: () { (FolderGrant) -> boolish } -> Array[FolderGrant]
319
+ def length: () -> Integer
320
+ end
321
+
322
+ class FolderRetentionPolicy
323
+ attr_accessor type: Symbol | String
324
+ attr_accessor policy: Symbol | String
325
+ attr_accessor lifetime: String?
326
+
327
+ def initialize: (FolderRetentionPoliciesCollection parent, Symbol | String policy, String? lifetime,
328
+ Symbol | String type) -> void
329
+
330
+ def keep?: () -> bool
331
+ def purge?: () -> bool
332
+ end
333
+
334
+ class FolderRetentionPoliciesCollection
335
+ attr_reader all: Array[FolderRetentionPolicy]
336
+
337
+ def initialize: (Folder parent) -> void
338
+
339
+ def new: (Symbol | String policy, String? lifetime, Symbol | String type) -> FolderRetentionPolicy
340
+ def create: (Symbol | String policy, String? lifetime, Symbol | String type) -> Array[FolderRetentionPolicy]
341
+ def add: (FolderRetentionPolicy retention_policy) -> Array[FolderRetentionPolicy]
342
+ def save!: () -> true
343
+
344
+ # Delegated to all through method_missing.
345
+ def each: () { (FolderRetentionPolicy) -> void } -> Array[FolderRetentionPolicy]
346
+ def map: [U] () { (FolderRetentionPolicy) -> U } -> Array[U]
347
+ def select: () { (FolderRetentionPolicy) -> boolish } -> Array[FolderRetentionPolicy]
348
+ def length: () -> Integer
349
+ end
350
+
351
+ class MountPoint < Base::Object
352
+ include Utils::BelongsToFolder
353
+ include SoapRequest::RequestMethodsMailbox
354
+ include MailboxItemConcern
355
+
356
+ def create!: () -> String?
357
+ def color!: () -> true
358
+
359
+ def modify!: () -> bot
360
+ def update!: (*untyped) -> bot
361
+ def reload!: () -> bot
362
+ end
363
+
364
+ class MountPointsCollection < Base::AccountObjectsCollection[MountPoint]
365
+ attr_reader root: MountPoint?
366
+ attr_accessor view: String?
367
+ attr_accessor tr: untyped
368
+ attr_accessor visible: untyped
369
+ attr_accessor needGranteeName: untyped
370
+ attr_accessor depth: Integer?
371
+
372
+ def where: (?view: String?, ?tr: untyped) -> self
373
+ def clear: () -> void
374
+ end
375
+
376
+ class SearchFolder < Base::Object
377
+ include SoapRequest::RequestMethodsMailbox
378
+ include MailboxItemConcern
379
+
380
+ # Returns the internal MailboxItemID, not the id string like other create! methods.
381
+ def create!: () -> MailboxItemID?
382
+ def color!: () -> true
383
+
384
+ def update!: (*untyped) -> bot
385
+ end
386
+
387
+ class SearchFoldersCollection < Base::AccountObjectsCollection[SearchFolder]
388
+ end
389
+
390
+ # ##########################################################################
391
+ # Contacts, calendar, tasks, documents
392
+ # ##########################################################################
393
+
394
+ class Contact < Base::Object
395
+ include Utils::BelongsToFolder
396
+ include Utils::BelongsToTag
397
+ include SoapRequest::RequestMethodsMailbox
398
+ include MailboxItemConcern
399
+
400
+ GROUP_PATTERN: String
401
+
402
+ attr_accessor anniversary: String?
403
+ attr_accessor assistantPhone: String?
404
+ attr_accessor birthday: String?
405
+ attr_accessor callbackPhone: String?
406
+ attr_accessor carPhone: String?
407
+ attr_accessor company: String?
408
+ attr_accessor companyPhone: String?
409
+ attr_accessor custom1: String?
410
+ attr_accessor department: String?
411
+ attr_accessor email: String?
412
+ attr_accessor email2: String?
413
+ attr_accessor email3: String?
414
+ attr_accessor email4: String?
415
+ attr_accessor email5: String?
416
+ attr_accessor email6: String?
417
+ attr_accessor email7: String?
418
+ attr_accessor firstName: String?
419
+ attr_accessor fullName: String?
420
+ attr_accessor homeCity: String?
421
+ attr_accessor homeCountry: String?
422
+ attr_accessor homeFax: String?
423
+ attr_accessor homePhone: String?
424
+ attr_accessor homePostalCode: String?
425
+ attr_accessor homeState: String?
426
+ attr_accessor homeStreet: String?
427
+ attr_accessor homeURL: String?
428
+ attr_accessor imAddress1: String?
429
+ attr_accessor imAddress2: String?
430
+ attr_accessor imAddress3: String?
431
+ attr_accessor imAddress4: String?
432
+ attr_accessor imAddress5: String?
433
+ attr_accessor jobTitle: String?
434
+ attr_accessor lastName: String?
435
+ attr_accessor maidenName: String?
436
+ attr_accessor middleName: String?
437
+ attr_accessor mobilePhone: String?
438
+ attr_accessor namePrefix: String?
439
+ attr_accessor nameSuffix: String?
440
+ attr_accessor nickname: String?
441
+ attr_accessor notes: String?
442
+ attr_accessor otherCity: String?
443
+ attr_accessor otherCountry: String?
444
+ attr_accessor otherFax: String?
445
+ attr_accessor otherPhone: String?
446
+ attr_accessor otherPostalCode: String?
447
+ attr_accessor otherState: String?
448
+ attr_accessor otherStreet: String?
449
+ attr_accessor otherURL: String?
450
+ attr_accessor pager: String?
451
+ attr_accessor workCity: String?
452
+ attr_accessor workCountry: String?
453
+ attr_accessor workFax: String?
454
+ attr_accessor workPhone: String?
455
+ attr_accessor workPostalCode: String?
456
+ attr_accessor workState: String?
457
+ attr_accessor workStreet: String?
458
+ attr_accessor workURL: String?
459
+ attr_accessor image: String?
460
+ attr_accessor type: String?
461
+ attr_accessor fileAs: String?
462
+ attr_accessor tn: String?
463
+ attr_accessor shared_account_id: String?
464
+ attr_accessor shared_folder_account_id: String?
465
+
466
+ def group?: () -> bool
467
+ def emails: () -> Array[String]
468
+ def add_custom_property: (Symbol | String key, untyped value) -> untyped
469
+ def create!: () -> String?
470
+
471
+ def rename!: (*untyped) -> bot
472
+ def reload!: () -> bot
473
+ end
474
+
475
+ class ContactsCollection < Base::AccountSearchObjectsCollection[Contact]
476
+ end
477
+
478
+ class Appointment < Base::Object
479
+ include Utils::BelongsToFolder
480
+ include Utils::BelongsToTag
481
+ include SoapRequest::RequestMethodsMailbox
482
+ include MailboxItemConcern
483
+
484
+ attr_accessor uid: String?
485
+ attr_accessor desc: String?
486
+ attr_accessor start_at: Time?
487
+ attr_accessor dur: Integer?
488
+ attr_accessor end_at: Time?
489
+ attr_accessor tn: String?
490
+ attr_accessor allDay: bool
491
+ attr_accessor organizer: Appointment::Organizer?
492
+ attr_accessor timezone: String
493
+ attr_accessor calItemId: String?
494
+ attr_accessor apptId: String?
495
+ attr_accessor invId: String?
496
+ attr_accessor rev: Integer?
497
+ attr_accessor fb: String?
498
+ attr_accessor transp: String?
499
+ attr_accessor recur: untyped
500
+ attr_accessor s: Integer?
501
+ attr_accessor ms: Integer?
502
+ attr_accessor f: String?
503
+ attr_reader recipients: Recipients
504
+ attr_reader attendees: Appointment::Attendees
505
+ attr_reader body: Appointment::BodyMail
506
+ alias description desc
507
+ alias recurrent recur
508
+ alias size s
509
+
510
+ def flags: () -> Array[String]
511
+ def download: (String dest_file_path, ?fmt: String) -> nil
512
+ def read: () -> String
513
+ def create!: () -> String?
514
+ def reload!: () -> untyped
515
+
516
+ # Set the free/busy status locally, call modify! to save it.
517
+ def free!: () -> String
518
+ def busy!: () -> String
519
+ def must_confirm!: () -> String
520
+ def out_of_office!: () -> String
521
+
522
+ def update!: (*untyped) -> bot
523
+ def rename!: (*untyped) -> bot
524
+
525
+ class Organizer
526
+ attr_accessor email: String
527
+ attr_accessor display_name: String?
528
+
529
+ def initialize: (String email, ?String? display_name) -> void
530
+ end
531
+
532
+ class Attendee
533
+ attr_accessor email: String
534
+ attr_accessor display_name: String?
535
+ attr_accessor role: String
536
+ attr_accessor ptst: String
537
+ attr_accessor rsvp: Integer | bool
538
+
539
+ def initialize: (String email, ?String? display_name, ?String role, ?String ptst, ?Integer | bool rsvp)
540
+ -> void
541
+ end
542
+
543
+ class Attendees
544
+ def initialize: () -> void
545
+
546
+ def map: [U] () { (Attendee) -> U } -> Array[U]
547
+ def add: (untyped attendee) -> Array[Attendee]?
548
+ def del: (Attendee | String attendee) -> untyped
549
+ def clear: () -> Array[Attendee]
550
+ end
551
+
552
+ class BodyMail
553
+ attr_accessor text: String?
554
+ attr_accessor html: String?
555
+ end
556
+ end
557
+
558
+ class Recipients
559
+ def initialize: () -> void
560
+
561
+ def map: [U] () { (Recipient) -> U } -> Array[U]
562
+ def add: (untyped recipient) -> Array[Recipient]?
563
+ def del: (Recipient | String recipient) -> untyped
564
+ def clear: () -> Array[Recipient]
565
+ def to: () -> Array[Recipient]
566
+ def cc: () -> Array[Recipient]
567
+ def bcc: () -> Array[Recipient]
568
+ def from: () -> Array[Recipient]
569
+ end
570
+
571
+ class AppointmentsCollection < Base::AccountSearchObjectsCollection[Appointment]
572
+ # Searches year by year, from 10 years ago to 10 years ahead by default.
573
+ def find_each: (?offset: Integer, ?limit: Integer, ?start_year: Integer?, ?end_year: Integer?)
574
+ { (Appointment) -> void } -> void
575
+ end
576
+
577
+ class Task < Base::Object
578
+ include Utils::BelongsToFolder
579
+ include Utils::BelongsToTag
580
+
581
+ def download: (String dest_file_path, ?fmt: String) -> nil
582
+
583
+ def create!: () -> bot
584
+ def modify!: () -> bot
585
+ def update!: (*untyped) -> bot
586
+ def rename!: (*untyped) -> bot
587
+ def reload!: () -> bot
588
+ def delete!: () -> bot
589
+ end
590
+
591
+ class TasksCollection < Base::AccountSearchObjectsCollection[Task]
592
+ def find_each: (?offset: Integer, ?limit: Integer) { (Task) -> void } -> void
593
+ end
594
+
595
+ class Document < Base::Object
596
+ include Utils::BelongsToFolder
597
+ include Utils::BelongsToTag
598
+ include SoapRequest::RequestMethodsMailbox
599
+
600
+ def download: (String dest_file_path) -> nil
601
+
602
+ def create!: () -> bot
603
+ def modify!: () -> bot
604
+ def update!: (*untyped) -> bot
605
+ def rename!: (*untyped) -> bot
606
+ def reload!: () -> bot
607
+ end
608
+
609
+ class DocumentsCollection < Base::AccountSearchObjectsCollection[Document]
610
+ def find_each: (?offset: Integer, ?limit: Integer) { (Document) -> void } -> void
611
+ end
612
+
613
+ # ##########################################################################
614
+ # Settings
615
+ # ##########################################################################
616
+
617
+ class Tag < Base::Object
618
+ include SoapRequest::RequestMethodsMailbox
619
+ include MailboxItemConcern
620
+
621
+ attr_accessor color: Integer?
622
+ attr_accessor rgb: String?
623
+
624
+ def create!: () -> String?
625
+ end
626
+
627
+ class TagsCollection < Base::AccountObjectsCollection[Tag]
628
+ end
629
+
630
+ class Identity < Base::Object
631
+ include SoapRequest::RequestMethodsMailbox
632
+
633
+ def create!: () -> String?
634
+ def rename!: (*untyped) -> bot
635
+ end
636
+
637
+ class IdentitiesCollection < Base::AccountObjectsCollection[Identity]
638
+ end
639
+
640
+ class Signature < Base::Object
641
+ include SoapRequest::RequestMethodsMailbox
642
+
643
+ attr_accessor txt: String?
644
+ attr_accessor html: String?
645
+
646
+ def create!: () -> String
647
+ def type: () -> String
648
+ def html?: () -> bool
649
+ def txt?: () -> bool
650
+ def content: () -> String
651
+
652
+ def update!: (*untyped) -> bot
653
+ end
654
+
655
+ class SignaturesCollection < Base::AccountObjectsCollection[Signature]
656
+ end
657
+
658
+ class DataSource < Base::Object
659
+ include SoapRequest::RequestMethodsMailbox
660
+
661
+ def initialize: (untyped parent, String data_source_type) -> void
662
+
663
+ def create!: () -> bot
664
+ def modify!: () -> bot
665
+ def rename!: (*untyped) -> bot
666
+ end
667
+
668
+ class DataSourcesCollection < Base::AccountObjectsCollection[DataSource]
669
+ end
670
+
671
+ class Ace < Base::Object
672
+ GT_USER: String
673
+ GT_GROUP: String
674
+ GT_DOMAIN: String
675
+ GT_PUB: String
676
+ GT_KEY: String
677
+
678
+ attr_accessor zid: String?
679
+ attr_accessor gt: String?
680
+ attr_accessor right: String?
681
+ attr_accessor d: String?
682
+ end
683
+
684
+ class AcesCollection < Base::AccountObjectsCollection[Ace]
685
+ attr_reader rights: Array[String]
686
+
687
+ def new_from_object: (Account | Resource | DistributionList | Domain item, String right) -> Ace
688
+ def create_from_object: (Account | Resource | DistributionList | Domain item, String right) -> Ace
689
+ def add: (Ace ace) -> Array[Ace]
690
+ def where: (*(String | Array[String]) rights) -> self
691
+ end
692
+
693
+ class Share < Base::Object
694
+ attr_accessor ownerId: String?
695
+ attr_accessor ownerEmail: String?
696
+ attr_accessor ownerName: String?
697
+ attr_accessor folderId: String?
698
+ attr_accessor folderUuid: String?
699
+ attr_accessor folderPath: String?
700
+ attr_accessor view: String?
701
+ attr_accessor rights: String?
702
+ attr_accessor granteeType: String?
703
+ attr_accessor granteeId: String?
704
+ attr_accessor granteeName: String?
705
+ attr_accessor mid: String?
706
+
707
+ def mountpoints: () -> ShareMountPointsCollection
708
+ end
709
+
710
+ class ShareMountPointsCollection
711
+ def initialize: (Share share) -> void
712
+
713
+ def new: () -> MountPoint
714
+ def all: () -> Array[MountPoint]
715
+ alias all! all
716
+ end
717
+
718
+ class SharesCollection < Base::ObjectsCollection[Share]
719
+ def where: (?owner_name: String?) -> self
720
+ end
721
+
722
+ class FilterRule < Base::Object
723
+ attr_accessor active: bool?
724
+ attr_accessor filterTests: untyped
725
+ attr_accessor filterActions: untyped
726
+ end
727
+
728
+ class FilterRulesCollection < Base::AccountObjectsCollection[FilterRule]
729
+ end
730
+
731
+ class OutgoingFilterRulesCollection < FilterRulesCollection
732
+ end
733
+
734
+ class AccountDlsMembershipCollection < Base::ObjectsCollection[DistributionList]
735
+ end
736
+
737
+ class AccountDlsOwnerCollection < Base::ObjectsCollection[DistributionList]
738
+ end
739
+
740
+ module Base
741
+ class MailboxPrefsCollection
742
+ def initialize: (MailboxObject parent) -> void
743
+
744
+ def all: () -> Hash[Symbol, untyped]?
745
+ alias all! all
746
+ def clear: () -> void
747
+ def preferences: (*(String | Array[String]) entries) -> self
748
+ def update!: (Hash[Symbol | String, untyped] hash) -> untyped
749
+ end
750
+
751
+ class MailboxInfosCollection
752
+ def initialize: (MailboxObject parent) -> void
753
+
754
+ def all: () -> Hash[Symbol, untyped]
755
+ alias all! all
756
+ def clear: () -> void
757
+ def sections: (*(String | Array[String]) entries) -> self
758
+ def rights: (*(String | Array[String]) entries) -> self
759
+ # Reads the mbox section and fills id, used, public_url, zimbraCOSId and home_url on the mailbox.
760
+ def read: () -> Hash[Symbol, untyped]
761
+ def zimbraMailHost: () -> String?
762
+ def zimbraMailHost!: () -> String?
763
+ end
764
+ end
765
+ end
766
+ end