simploxide_api_types/
errors.rs

1use super::*;
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4#[serde(tag = "type")]
5#[non_exhaustive]
6pub enum AgentCryptoError {
7    #[serde(rename = "DECRYPT_AES")]
8    DecryptAes,
9    #[serde(rename = "DECRYPT_CB")]
10    DecryptCb,
11    #[serde(rename = "RATCHET_HEADER")]
12    RatchetHeader,
13    #[serde(rename = "RATCHET_SYNC")]
14    RatchetSync,
15    #[serde(untagged)]
16    Undocumented(JsonObject),
17}
18
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
20#[serde(tag = "type")]
21#[non_exhaustive]
22pub enum AgentErrorType {
23    #[serde(rename = "CMD")]
24    Cmd {
25        #[serde(rename = "cmdErr")]
26        cmd_err: CommandErrorType,
27
28        #[serde(rename = "errContext")]
29        err_context: String,
30
31        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
32        undocumented: HashMap<String, JsonObject>,
33    },
34    #[serde(rename = "CONN")]
35    Conn {
36        #[serde(rename = "connErr")]
37        conn_err: ConnectionErrorType,
38
39        #[serde(rename = "errContext")]
40        err_context: String,
41
42        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
43        undocumented: HashMap<String, JsonObject>,
44    },
45    #[serde(rename = "NO_USER")]
46    NoUser,
47    #[serde(rename = "SMP")]
48    Smp {
49        #[serde(rename = "serverAddress")]
50        server_address: String,
51
52        #[serde(rename = "smpErr")]
53        smp_err: ErrorType,
54
55        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
56        undocumented: HashMap<String, JsonObject>,
57    },
58    #[serde(rename = "NTF")]
59    Ntf {
60        #[serde(rename = "serverAddress")]
61        server_address: String,
62
63        #[serde(rename = "ntfErr")]
64        ntf_err: ErrorType,
65
66        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
67        undocumented: HashMap<String, JsonObject>,
68    },
69    #[serde(rename = "XFTP")]
70    Xftp {
71        #[serde(rename = "serverAddress")]
72        server_address: String,
73
74        #[serde(rename = "xftpErr")]
75        xftp_err: XFTPErrorType,
76
77        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
78        undocumented: HashMap<String, JsonObject>,
79    },
80    #[serde(rename = "FILE")]
81    File {
82        #[serde(rename = "fileErr")]
83        file_err: FileErrorType,
84
85        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
86        undocumented: HashMap<String, JsonObject>,
87    },
88    #[serde(rename = "PROXY")]
89    Proxy {
90        #[serde(rename = "proxyServer")]
91        proxy_server: String,
92
93        #[serde(rename = "relayServer")]
94        relay_server: String,
95
96        #[serde(rename = "proxyErr")]
97        proxy_err: ProxyClientError,
98
99        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
100        undocumented: HashMap<String, JsonObject>,
101    },
102    #[serde(rename = "RCP")]
103    Rcp {
104        #[serde(rename = "rcpErr")]
105        rcp_err: RCErrorType,
106
107        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
108        undocumented: HashMap<String, JsonObject>,
109    },
110    #[serde(rename = "BROKER")]
111    Broker {
112        #[serde(rename = "brokerAddress")]
113        broker_address: String,
114
115        #[serde(rename = "brokerErr")]
116        broker_err: BrokerErrorType,
117
118        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
119        undocumented: HashMap<String, JsonObject>,
120    },
121    #[serde(rename = "AGENT")]
122    Agent {
123        #[serde(rename = "agentErr")]
124        agent_err: SMPAgentError,
125
126        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
127        undocumented: HashMap<String, JsonObject>,
128    },
129    #[serde(rename = "INTERNAL")]
130    Internal {
131        #[serde(rename = "internalErr")]
132        internal_err: String,
133
134        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
135        undocumented: HashMap<String, JsonObject>,
136    },
137    #[serde(rename = "CRITICAL")]
138    Critical {
139        #[serde(rename = "offerRestart")]
140        offer_restart: bool,
141
142        #[serde(rename = "criticalErr")]
143        critical_err: String,
144
145        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
146        undocumented: HashMap<String, JsonObject>,
147    },
148    #[serde(rename = "INACTIVE")]
149    Inactive,
150    #[serde(untagged)]
151    Undocumented(JsonObject),
152}
153
154#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
155#[serde(tag = "type")]
156#[non_exhaustive]
157pub enum BrokerErrorType {
158    #[serde(rename = "RESPONSE")]
159    Response {
160        #[serde(rename = "respErr")]
161        resp_err: String,
162
163        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
164        undocumented: HashMap<String, JsonObject>,
165    },
166    #[serde(rename = "UNEXPECTED")]
167    Unexpected {
168        #[serde(rename = "respErr")]
169        resp_err: String,
170
171        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
172        undocumented: HashMap<String, JsonObject>,
173    },
174    #[serde(rename = "NETWORK")]
175    Network,
176    #[serde(rename = "HOST")]
177    Host,
178    #[serde(rename = "NO_SERVICE")]
179    NoService,
180    #[serde(rename = "TRANSPORT")]
181    Transport {
182        #[serde(rename = "transportErr")]
183        transport_err: TransportError,
184
185        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
186        undocumented: HashMap<String, JsonObject>,
187    },
188    #[serde(rename = "TIMEOUT")]
189    Timeout,
190    #[serde(untagged)]
191    Undocumented(JsonObject),
192}
193
194#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
195#[serde(tag = "type")]
196#[non_exhaustive]
197pub enum ChatError {
198    #[serde(rename = "error")]
199    Error {
200        #[serde(rename = "errorType")]
201        error_type: ChatErrorType,
202
203        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
204        undocumented: HashMap<String, JsonObject>,
205    },
206    #[serde(rename = "errorAgent")]
207    ErrorAgent {
208        #[serde(rename = "agentError")]
209        agent_error: AgentErrorType,
210
211        #[serde(rename = "connectionEntity_", skip_serializing_if = "Option::is_none")]
212        connection_entity: Option<ConnectionEntity>,
213
214        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
215        undocumented: HashMap<String, JsonObject>,
216    },
217    #[serde(rename = "errorStore")]
218    ErrorStore {
219        #[serde(rename = "storeError")]
220        store_error: StoreError,
221
222        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
223        undocumented: HashMap<String, JsonObject>,
224    },
225    #[serde(untagged)]
226    Undocumented(JsonObject),
227}
228
229#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
230#[serde(tag = "type")]
231#[non_exhaustive]
232pub enum ChatErrorType {
233    #[serde(rename = "noActiveUser")]
234    NoActiveUser,
235    #[serde(rename = "noConnectionUser")]
236    NoConnectionUser {
237        #[serde(rename = "agentConnId")]
238        agent_conn_id: String,
239
240        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
241        undocumented: HashMap<String, JsonObject>,
242    },
243    #[serde(rename = "noSndFileUser")]
244    NoSndFileUser {
245        #[serde(rename = "agentSndFileId")]
246        agent_snd_file_id: String,
247
248        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
249        undocumented: HashMap<String, JsonObject>,
250    },
251    #[serde(rename = "noRcvFileUser")]
252    NoRcvFileUser {
253        #[serde(rename = "agentRcvFileId")]
254        agent_rcv_file_id: String,
255
256        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
257        undocumented: HashMap<String, JsonObject>,
258    },
259    #[serde(rename = "userUnknown")]
260    UserUnknown,
261    #[serde(rename = "activeUserExists")]
262    ActiveUserExists,
263    #[serde(rename = "userExists")]
264    UserExists {
265        #[serde(rename = "contactName")]
266        contact_name: String,
267
268        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
269        undocumented: HashMap<String, JsonObject>,
270    },
271    #[serde(rename = "differentActiveUser")]
272    DifferentActiveUser {
273        #[serde(
274            rename = "commandUserId",
275            deserialize_with = "deserialize_number_from_string"
276        )]
277        command_user_id: i64,
278
279        #[serde(
280            rename = "activeUserId",
281            deserialize_with = "deserialize_number_from_string"
282        )]
283        active_user_id: i64,
284
285        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
286        undocumented: HashMap<String, JsonObject>,
287    },
288    #[serde(rename = "cantDeleteActiveUser")]
289    CantDeleteActiveUser {
290        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
291        user_id: i64,
292
293        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
294        undocumented: HashMap<String, JsonObject>,
295    },
296    #[serde(rename = "cantDeleteLastUser")]
297    CantDeleteLastUser {
298        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
299        user_id: i64,
300
301        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
302        undocumented: HashMap<String, JsonObject>,
303    },
304    #[serde(rename = "cantHideLastUser")]
305    CantHideLastUser {
306        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
307        user_id: i64,
308
309        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
310        undocumented: HashMap<String, JsonObject>,
311    },
312    #[serde(rename = "hiddenUserAlwaysMuted")]
313    HiddenUserAlwaysMuted {
314        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
315        user_id: i64,
316
317        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
318        undocumented: HashMap<String, JsonObject>,
319    },
320    #[serde(rename = "emptyUserPassword")]
321    EmptyUserPassword {
322        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
323        user_id: i64,
324
325        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
326        undocumented: HashMap<String, JsonObject>,
327    },
328    #[serde(rename = "userAlreadyHidden")]
329    UserAlreadyHidden {
330        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
331        user_id: i64,
332
333        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
334        undocumented: HashMap<String, JsonObject>,
335    },
336    #[serde(rename = "userNotHidden")]
337    UserNotHidden {
338        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
339        user_id: i64,
340
341        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
342        undocumented: HashMap<String, JsonObject>,
343    },
344    #[serde(rename = "invalidDisplayName")]
345    InvalidDisplayName {
346        #[serde(rename = "displayName")]
347        display_name: String,
348
349        #[serde(rename = "validName")]
350        valid_name: String,
351
352        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
353        undocumented: HashMap<String, JsonObject>,
354    },
355    #[serde(rename = "chatNotStarted")]
356    ChatNotStarted,
357    #[serde(rename = "chatNotStopped")]
358    ChatNotStopped,
359    #[serde(rename = "chatStoreChanged")]
360    ChatStoreChanged,
361    #[serde(rename = "invalidConnReq")]
362    InvalidConnReq,
363    #[serde(rename = "unsupportedConnReq")]
364    UnsupportedConnReq,
365    #[serde(rename = "connReqMessageProhibited")]
366    ConnReqMessageProhibited,
367    #[serde(rename = "contactNotReady")]
368    ContactNotReady {
369        #[serde(rename = "contact")]
370        contact: Contact,
371
372        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
373        undocumented: HashMap<String, JsonObject>,
374    },
375    #[serde(rename = "contactNotActive")]
376    ContactNotActive {
377        #[serde(rename = "contact")]
378        contact: Contact,
379
380        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
381        undocumented: HashMap<String, JsonObject>,
382    },
383    #[serde(rename = "contactDisabled")]
384    ContactDisabled {
385        #[serde(rename = "contact")]
386        contact: Contact,
387
388        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
389        undocumented: HashMap<String, JsonObject>,
390    },
391    #[serde(rename = "connectionDisabled")]
392    ConnectionDisabled {
393        #[serde(rename = "connection")]
394        connection: Connection,
395
396        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
397        undocumented: HashMap<String, JsonObject>,
398    },
399    #[serde(rename = "groupUserRole")]
400    GroupUserRole {
401        #[serde(rename = "groupInfo")]
402        group_info: GroupInfo,
403
404        #[serde(rename = "requiredRole")]
405        required_role: GroupMemberRole,
406
407        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
408        undocumented: HashMap<String, JsonObject>,
409    },
410    #[serde(rename = "groupMemberInitialRole")]
411    GroupMemberInitialRole {
412        #[serde(rename = "groupInfo")]
413        group_info: GroupInfo,
414
415        #[serde(rename = "initialRole")]
416        initial_role: GroupMemberRole,
417
418        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
419        undocumented: HashMap<String, JsonObject>,
420    },
421    #[serde(rename = "contactIncognitoCantInvite")]
422    ContactIncognitoCantInvite,
423    #[serde(rename = "groupIncognitoCantInvite")]
424    GroupIncognitoCantInvite,
425    #[serde(rename = "groupContactRole")]
426    GroupContactRole {
427        #[serde(rename = "contactName")]
428        contact_name: String,
429
430        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
431        undocumented: HashMap<String, JsonObject>,
432    },
433    #[serde(rename = "groupDuplicateMember")]
434    GroupDuplicateMember {
435        #[serde(rename = "contactName")]
436        contact_name: String,
437
438        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
439        undocumented: HashMap<String, JsonObject>,
440    },
441    #[serde(rename = "groupDuplicateMemberId")]
442    GroupDuplicateMemberId,
443    #[serde(rename = "groupNotJoined")]
444    GroupNotJoined {
445        #[serde(rename = "groupInfo")]
446        group_info: GroupInfo,
447
448        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
449        undocumented: HashMap<String, JsonObject>,
450    },
451    #[serde(rename = "groupMemberNotActive")]
452    GroupMemberNotActive,
453    #[serde(rename = "cantBlockMemberForSelf")]
454    CantBlockMemberForSelf {
455        #[serde(rename = "groupInfo")]
456        group_info: GroupInfo,
457
458        #[serde(rename = "member")]
459        member: GroupMember,
460
461        #[serde(rename = "setShowMessages")]
462        set_show_messages: bool,
463
464        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
465        undocumented: HashMap<String, JsonObject>,
466    },
467    #[serde(rename = "groupMemberUserRemoved")]
468    GroupMemberUserRemoved,
469    #[serde(rename = "groupMemberNotFound")]
470    GroupMemberNotFound,
471    #[serde(rename = "groupCantResendInvitation")]
472    GroupCantResendInvitation {
473        #[serde(rename = "groupInfo")]
474        group_info: GroupInfo,
475
476        #[serde(rename = "contactName")]
477        contact_name: String,
478
479        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
480        undocumented: HashMap<String, JsonObject>,
481    },
482    #[serde(rename = "groupInternal")]
483    GroupInternal {
484        #[serde(rename = "message")]
485        message: String,
486
487        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
488        undocumented: HashMap<String, JsonObject>,
489    },
490    #[serde(rename = "fileNotFound")]
491    FileNotFound {
492        #[serde(rename = "message")]
493        message: String,
494
495        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
496        undocumented: HashMap<String, JsonObject>,
497    },
498    #[serde(rename = "fileSize")]
499    FileSize {
500        #[serde(rename = "filePath")]
501        file_path: String,
502
503        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
504        undocumented: HashMap<String, JsonObject>,
505    },
506    #[serde(rename = "fileAlreadyReceiving")]
507    FileAlreadyReceiving {
508        #[serde(rename = "message")]
509        message: String,
510
511        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
512        undocumented: HashMap<String, JsonObject>,
513    },
514    #[serde(rename = "fileCancelled")]
515    FileCancelled {
516        #[serde(rename = "message")]
517        message: String,
518
519        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
520        undocumented: HashMap<String, JsonObject>,
521    },
522    #[serde(rename = "fileCancel")]
523    FileCancel {
524        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
525        file_id: i64,
526
527        #[serde(rename = "message")]
528        message: String,
529
530        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
531        undocumented: HashMap<String, JsonObject>,
532    },
533    #[serde(rename = "fileAlreadyExists")]
534    FileAlreadyExists {
535        #[serde(rename = "filePath")]
536        file_path: String,
537
538        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
539        undocumented: HashMap<String, JsonObject>,
540    },
541    #[serde(rename = "fileRead")]
542    FileRead {
543        #[serde(rename = "filePath")]
544        file_path: String,
545
546        #[serde(rename = "message")]
547        message: String,
548
549        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
550        undocumented: HashMap<String, JsonObject>,
551    },
552    #[serde(rename = "fileWrite")]
553    FileWrite {
554        #[serde(rename = "filePath")]
555        file_path: String,
556
557        #[serde(rename = "message")]
558        message: String,
559
560        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
561        undocumented: HashMap<String, JsonObject>,
562    },
563    #[serde(rename = "fileSend")]
564    FileSend {
565        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
566        file_id: i64,
567
568        #[serde(rename = "agentError")]
569        agent_error: AgentErrorType,
570
571        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
572        undocumented: HashMap<String, JsonObject>,
573    },
574    #[serde(rename = "fileRcvChunk")]
575    FileRcvChunk {
576        #[serde(rename = "message")]
577        message: String,
578
579        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
580        undocumented: HashMap<String, JsonObject>,
581    },
582    #[serde(rename = "fileInternal")]
583    FileInternal {
584        #[serde(rename = "message")]
585        message: String,
586
587        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
588        undocumented: HashMap<String, JsonObject>,
589    },
590    #[serde(rename = "fileImageType")]
591    FileImageType {
592        #[serde(rename = "filePath")]
593        file_path: String,
594
595        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
596        undocumented: HashMap<String, JsonObject>,
597    },
598    #[serde(rename = "fileImageSize")]
599    FileImageSize {
600        #[serde(rename = "filePath")]
601        file_path: String,
602
603        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
604        undocumented: HashMap<String, JsonObject>,
605    },
606    #[serde(rename = "fileNotReceived")]
607    FileNotReceived {
608        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
609        file_id: i64,
610
611        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
612        undocumented: HashMap<String, JsonObject>,
613    },
614    #[serde(rename = "fileNotApproved")]
615    FileNotApproved {
616        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
617        file_id: i64,
618
619        #[serde(rename = "unknownServers")]
620        unknown_servers: Vec<String>,
621
622        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
623        undocumented: HashMap<String, JsonObject>,
624    },
625    #[serde(rename = "fallbackToSMPProhibited")]
626    FallbackToSmpProhibited {
627        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
628        file_id: i64,
629
630        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
631        undocumented: HashMap<String, JsonObject>,
632    },
633    #[serde(rename = "inlineFileProhibited")]
634    InlineFileProhibited {
635        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
636        file_id: i64,
637
638        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
639        undocumented: HashMap<String, JsonObject>,
640    },
641    #[serde(rename = "invalidForward")]
642    InvalidForward,
643    #[serde(rename = "invalidChatItemUpdate")]
644    InvalidChatItemUpdate,
645    #[serde(rename = "invalidChatItemDelete")]
646    InvalidChatItemDelete,
647    #[serde(rename = "hasCurrentCall")]
648    HasCurrentCall,
649    #[serde(rename = "noCurrentCall")]
650    NoCurrentCall,
651    #[serde(rename = "callContact")]
652    CallContact {
653        #[serde(
654            rename = "contactId",
655            deserialize_with = "deserialize_number_from_string"
656        )]
657        contact_id: i64,
658
659        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
660        undocumented: HashMap<String, JsonObject>,
661    },
662    #[serde(rename = "directMessagesProhibited")]
663    DirectMessagesProhibited {
664        #[serde(rename = "direction")]
665        direction: MsgDirection,
666
667        #[serde(rename = "contact")]
668        contact: Contact,
669
670        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
671        undocumented: HashMap<String, JsonObject>,
672    },
673    #[serde(rename = "agentVersion")]
674    AgentVersion,
675    #[serde(rename = "agentNoSubResult")]
676    AgentNoSubResult {
677        #[serde(rename = "agentConnId")]
678        agent_conn_id: String,
679
680        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
681        undocumented: HashMap<String, JsonObject>,
682    },
683    #[serde(rename = "commandError")]
684    CommandError {
685        #[serde(rename = "message")]
686        message: String,
687
688        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
689        undocumented: HashMap<String, JsonObject>,
690    },
691    #[serde(rename = "agentCommandError")]
692    AgentCommandError {
693        #[serde(rename = "message")]
694        message: String,
695
696        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
697        undocumented: HashMap<String, JsonObject>,
698    },
699    #[serde(rename = "invalidFileDescription")]
700    InvalidFileDescription {
701        #[serde(rename = "message")]
702        message: String,
703
704        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
705        undocumented: HashMap<String, JsonObject>,
706    },
707    #[serde(rename = "connectionIncognitoChangeProhibited")]
708    ConnectionIncognitoChangeProhibited,
709    #[serde(rename = "connectionUserChangeProhibited")]
710    ConnectionUserChangeProhibited,
711    #[serde(rename = "peerChatVRangeIncompatible")]
712    PeerChatVRangeIncompatible,
713    #[serde(rename = "internalError")]
714    InternalError {
715        #[serde(rename = "message")]
716        message: String,
717
718        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
719        undocumented: HashMap<String, JsonObject>,
720    },
721    #[serde(rename = "exception")]
722    Exception {
723        #[serde(rename = "message")]
724        message: String,
725
726        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
727        undocumented: HashMap<String, JsonObject>,
728    },
729    #[serde(untagged)]
730    Undocumented(JsonObject),
731}
732
733#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
734#[serde(tag = "type")]
735#[non_exhaustive]
736pub enum CommandError {
737    #[serde(rename = "UNKNOWN")]
738    Unknown,
739    #[serde(rename = "SYNTAX")]
740    Syntax,
741    #[serde(rename = "PROHIBITED")]
742    Prohibited,
743    #[serde(rename = "NO_AUTH")]
744    NoAuth,
745    #[serde(rename = "HAS_AUTH")]
746    HasAuth,
747    #[serde(rename = "NO_ENTITY")]
748    NoEntity,
749    #[serde(untagged)]
750    Undocumented(JsonObject),
751}
752
753#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
754#[serde(tag = "type")]
755#[non_exhaustive]
756pub enum CommandErrorType {
757    #[serde(rename = "PROHIBITED")]
758    Prohibited,
759    #[serde(rename = "SYNTAX")]
760    Syntax,
761    #[serde(rename = "NO_CONN")]
762    NoConn,
763    #[serde(rename = "SIZE")]
764    Size,
765    #[serde(rename = "LARGE")]
766    Large,
767    #[serde(untagged)]
768    Undocumented(JsonObject),
769}
770
771#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
772#[serde(tag = "type")]
773#[non_exhaustive]
774pub enum ConnectionErrorType {
775    #[serde(rename = "NOT_FOUND")]
776    NotFound,
777    #[serde(rename = "DUPLICATE")]
778    Duplicate,
779    #[serde(rename = "SIMPLEX")]
780    Simplex,
781    #[serde(rename = "NOT_ACCEPTED")]
782    NotAccepted,
783    #[serde(rename = "NOT_AVAILABLE")]
784    NotAvailable,
785    #[serde(untagged)]
786    Undocumented(JsonObject),
787}
788
789#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
790#[serde(tag = "type")]
791#[non_exhaustive]
792pub enum ErrorType {
793    #[serde(rename = "BLOCK")]
794    Block,
795    #[serde(rename = "SESSION")]
796    Session,
797    #[serde(rename = "CMD")]
798    Cmd {
799        #[serde(rename = "cmdErr")]
800        cmd_err: CommandError,
801
802        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
803        undocumented: HashMap<String, JsonObject>,
804    },
805    #[serde(rename = "PROXY")]
806    Proxy {
807        #[serde(rename = "proxyErr")]
808        proxy_err: Arc<ProxyError>,
809
810        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
811        undocumented: HashMap<String, JsonObject>,
812    },
813    #[serde(rename = "AUTH")]
814    Auth,
815    #[serde(rename = "BLOCKED")]
816    Blocked {
817        #[serde(rename = "blockInfo")]
818        block_info: BlockingInfo,
819
820        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
821        undocumented: HashMap<String, JsonObject>,
822    },
823    #[serde(rename = "SERVICE")]
824    Service,
825    #[serde(rename = "CRYPTO")]
826    Crypto,
827    #[serde(rename = "QUOTA")]
828    Quota,
829    #[serde(rename = "STORE")]
830    Store {
831        #[serde(rename = "storeErr")]
832        store_err: String,
833
834        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
835        undocumented: HashMap<String, JsonObject>,
836    },
837    #[serde(rename = "NO_MSG")]
838    NoMsg,
839    #[serde(rename = "LARGE_MSG")]
840    LargeMsg,
841    #[serde(rename = "EXPIRED")]
842    Expired,
843    #[serde(rename = "INTERNAL")]
844    Internal,
845    #[serde(rename = "DUPLICATE_")]
846    Duplicate,
847    #[serde(untagged)]
848    Undocumented(JsonObject),
849}
850
851#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
852#[serde(tag = "type")]
853#[non_exhaustive]
854pub enum FileError {
855    #[serde(rename = "auth")]
856    Auth,
857    #[serde(rename = "blocked")]
858    Blocked {
859        #[serde(rename = "server")]
860        server: String,
861
862        #[serde(rename = "blockInfo")]
863        block_info: BlockingInfo,
864
865        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
866        undocumented: HashMap<String, JsonObject>,
867    },
868    #[serde(rename = "noFile")]
869    NoFile,
870    #[serde(rename = "relay")]
871    Relay {
872        #[serde(rename = "srvError")]
873        srv_error: SrvError,
874
875        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
876        undocumented: HashMap<String, JsonObject>,
877    },
878    #[serde(rename = "other")]
879    Other {
880        #[serde(rename = "fileError")]
881        file_error: String,
882
883        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
884        undocumented: HashMap<String, JsonObject>,
885    },
886    #[serde(untagged)]
887    Undocumented(JsonObject),
888}
889
890#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
891#[serde(tag = "type")]
892#[non_exhaustive]
893pub enum FileErrorType {
894    #[serde(rename = "NOT_APPROVED")]
895    NotApproved,
896    #[serde(rename = "SIZE")]
897    Size,
898    #[serde(rename = "REDIRECT")]
899    Redirect {
900        #[serde(rename = "redirectError")]
901        redirect_error: String,
902
903        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
904        undocumented: HashMap<String, JsonObject>,
905    },
906    #[serde(rename = "FILE_IO")]
907    FileIo {
908        #[serde(rename = "fileIOError")]
909        file_io_error: String,
910
911        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
912        undocumented: HashMap<String, JsonObject>,
913    },
914    #[serde(rename = "NO_FILE")]
915    NoFile,
916    #[serde(untagged)]
917    Undocumented(JsonObject),
918}
919
920#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
921#[non_exhaustive]
922pub enum HandshakeError {
923    #[default]
924    #[serde(rename = "PARSE")]
925    Parse,
926    #[serde(rename = "IDENTITY")]
927    Identity,
928    #[serde(rename = "BAD_AUTH")]
929    BadAuth,
930    #[serde(rename = "BAD_SERVICE")]
931    BadService,
932}
933
934#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
935#[non_exhaustive]
936pub enum MsgDecryptError {
937    #[default]
938    #[serde(rename = "ratchetHeader")]
939    RatchetHeader,
940    #[serde(rename = "tooManySkipped")]
941    TooManySkipped,
942    #[serde(rename = "ratchetEarlier")]
943    RatchetEarlier,
944    #[serde(rename = "other")]
945    Other,
946    #[serde(rename = "ratchetSync")]
947    RatchetSync,
948}
949
950#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
951#[serde(tag = "type")]
952#[non_exhaustive]
953pub enum MsgErrorType {
954    #[serde(rename = "msgSkipped")]
955    MsgSkipped {
956        #[serde(
957            rename = "fromMsgId",
958            deserialize_with = "deserialize_number_from_string"
959        )]
960        from_msg_id: i64,
961
962        #[serde(
963            rename = "toMsgId",
964            deserialize_with = "deserialize_number_from_string"
965        )]
966        to_msg_id: i64,
967
968        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
969        undocumented: HashMap<String, JsonObject>,
970    },
971    #[serde(rename = "msgBadId")]
972    MsgBadId {
973        #[serde(rename = "msgId", deserialize_with = "deserialize_number_from_string")]
974        msg_id: i64,
975
976        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
977        undocumented: HashMap<String, JsonObject>,
978    },
979    #[serde(rename = "msgBadHash")]
980    MsgBadHash,
981    #[serde(rename = "msgDuplicate")]
982    MsgDuplicate,
983    #[serde(untagged)]
984    Undocumented(JsonObject),
985}
986
987#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
988#[serde(tag = "type")]
989#[non_exhaustive]
990pub enum ProxyClientError {
991    #[serde(rename = "protocolError")]
992    ProtocolError {
993        #[serde(rename = "protocolErr")]
994        protocol_err: ErrorType,
995
996        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
997        undocumented: HashMap<String, JsonObject>,
998    },
999    #[serde(rename = "unexpectedResponse")]
1000    UnexpectedResponse {
1001        #[serde(rename = "responseStr")]
1002        response_str: String,
1003
1004        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1005        undocumented: HashMap<String, JsonObject>,
1006    },
1007    #[serde(rename = "responseError")]
1008    ResponseError {
1009        #[serde(rename = "responseErr")]
1010        response_err: ErrorType,
1011
1012        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1013        undocumented: HashMap<String, JsonObject>,
1014    },
1015    #[serde(untagged)]
1016    Undocumented(JsonObject),
1017}
1018
1019#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1020#[serde(tag = "type")]
1021#[non_exhaustive]
1022pub enum ProxyError {
1023    #[serde(rename = "PROTOCOL")]
1024    Protocol {
1025        #[serde(rename = "protocolErr")]
1026        protocol_err: ErrorType,
1027
1028        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1029        undocumented: HashMap<String, JsonObject>,
1030    },
1031    #[serde(rename = "BROKER")]
1032    Broker {
1033        #[serde(rename = "brokerErr")]
1034        broker_err: BrokerErrorType,
1035
1036        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1037        undocumented: HashMap<String, JsonObject>,
1038    },
1039    #[serde(rename = "BASIC_AUTH")]
1040    BasicAuth,
1041    #[serde(rename = "NO_SESSION")]
1042    NoSession,
1043    #[serde(untagged)]
1044    Undocumented(JsonObject),
1045}
1046
1047#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1048#[serde(tag = "type")]
1049#[non_exhaustive]
1050pub enum RCErrorType {
1051    #[serde(rename = "internal")]
1052    Internal {
1053        #[serde(rename = "internalErr")]
1054        internal_err: String,
1055
1056        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1057        undocumented: HashMap<String, JsonObject>,
1058    },
1059    #[serde(rename = "identity")]
1060    Identity,
1061    #[serde(rename = "noLocalAddress")]
1062    NoLocalAddress,
1063    #[serde(rename = "newController")]
1064    NewController,
1065    #[serde(rename = "notDiscovered")]
1066    NotDiscovered,
1067    #[serde(rename = "tLSStartFailed")]
1068    TLsStartFailed,
1069    #[serde(rename = "exception")]
1070    Exception {
1071        #[serde(rename = "exception")]
1072        exception: String,
1073
1074        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1075        undocumented: HashMap<String, JsonObject>,
1076    },
1077    #[serde(rename = "ctrlAuth")]
1078    CtrlAuth,
1079    #[serde(rename = "ctrlNotFound")]
1080    CtrlNotFound,
1081    #[serde(rename = "ctrlError")]
1082    CtrlError {
1083        #[serde(rename = "ctrlErr")]
1084        ctrl_err: String,
1085
1086        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1087        undocumented: HashMap<String, JsonObject>,
1088    },
1089    #[serde(rename = "invitation")]
1090    Invitation,
1091    #[serde(rename = "version")]
1092    Version,
1093    #[serde(rename = "encrypt")]
1094    Encrypt,
1095    #[serde(rename = "decrypt")]
1096    Decrypt,
1097    #[serde(rename = "blockSize")]
1098    BlockSize,
1099    #[serde(rename = "syntax")]
1100    Syntax {
1101        #[serde(rename = "syntaxErr")]
1102        syntax_err: String,
1103
1104        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1105        undocumented: HashMap<String, JsonObject>,
1106    },
1107    #[serde(untagged)]
1108    Undocumented(JsonObject),
1109}
1110
1111#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1112#[serde(tag = "type")]
1113#[non_exhaustive]
1114pub enum SMPAgentError {
1115    #[serde(rename = "A_MESSAGE")]
1116    AMessage,
1117    #[serde(rename = "A_PROHIBITED")]
1118    AProhibited {
1119        #[serde(rename = "prohibitedErr")]
1120        prohibited_err: String,
1121
1122        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1123        undocumented: HashMap<String, JsonObject>,
1124    },
1125    #[serde(rename = "A_VERSION")]
1126    AVersion,
1127    #[serde(rename = "A_LINK")]
1128    ALink {
1129        #[serde(rename = "linkErr")]
1130        link_err: String,
1131
1132        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1133        undocumented: HashMap<String, JsonObject>,
1134    },
1135    #[serde(rename = "A_CRYPTO")]
1136    ACrypto {
1137        #[serde(rename = "cryptoErr")]
1138        crypto_err: AgentCryptoError,
1139
1140        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1141        undocumented: HashMap<String, JsonObject>,
1142    },
1143    #[serde(rename = "A_DUPLICATE")]
1144    ADuplicate,
1145    #[serde(rename = "A_QUEUE")]
1146    AQueue {
1147        #[serde(rename = "queueErr")]
1148        queue_err: String,
1149
1150        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1151        undocumented: HashMap<String, JsonObject>,
1152    },
1153    #[serde(untagged)]
1154    Undocumented(JsonObject),
1155}
1156
1157#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1158#[serde(tag = "type")]
1159#[non_exhaustive]
1160pub enum SndError {
1161    #[serde(rename = "auth")]
1162    Auth,
1163    #[serde(rename = "quota")]
1164    Quota,
1165    #[serde(rename = "expired")]
1166    Expired,
1167    #[serde(rename = "relay")]
1168    Relay {
1169        #[serde(rename = "srvError")]
1170        srv_error: SrvError,
1171
1172        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1173        undocumented: HashMap<String, JsonObject>,
1174    },
1175    #[serde(rename = "proxy")]
1176    Proxy {
1177        #[serde(rename = "proxyServer")]
1178        proxy_server: String,
1179
1180        #[serde(rename = "srvError")]
1181        srv_error: SrvError,
1182
1183        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1184        undocumented: HashMap<String, JsonObject>,
1185    },
1186    #[serde(rename = "proxyRelay")]
1187    ProxyRelay {
1188        #[serde(rename = "proxyServer")]
1189        proxy_server: String,
1190
1191        #[serde(rename = "srvError")]
1192        srv_error: SrvError,
1193
1194        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1195        undocumented: HashMap<String, JsonObject>,
1196    },
1197    #[serde(rename = "other")]
1198    Other {
1199        #[serde(rename = "sndError")]
1200        snd_error: String,
1201
1202        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1203        undocumented: HashMap<String, JsonObject>,
1204    },
1205    #[serde(untagged)]
1206    Undocumented(JsonObject),
1207}
1208
1209#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1210#[serde(tag = "type")]
1211#[non_exhaustive]
1212pub enum SrvError {
1213    #[serde(rename = "host")]
1214    Host,
1215    #[serde(rename = "version")]
1216    Version,
1217    #[serde(rename = "other")]
1218    Other {
1219        #[serde(rename = "srvError")]
1220        srv_error: String,
1221
1222        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1223        undocumented: HashMap<String, JsonObject>,
1224    },
1225    #[serde(untagged)]
1226    Undocumented(JsonObject),
1227}
1228
1229#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1230#[serde(tag = "type")]
1231#[non_exhaustive]
1232pub enum StoreError {
1233    #[serde(rename = "duplicateName")]
1234    DuplicateName,
1235    #[serde(rename = "userNotFound")]
1236    UserNotFound {
1237        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
1238        user_id: i64,
1239
1240        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1241        undocumented: HashMap<String, JsonObject>,
1242    },
1243    #[serde(rename = "userNotFoundByName")]
1244    UserNotFoundByName {
1245        #[serde(rename = "contactName")]
1246        contact_name: String,
1247
1248        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1249        undocumented: HashMap<String, JsonObject>,
1250    },
1251    #[serde(rename = "userNotFoundByContactId")]
1252    UserNotFoundByContactId {
1253        #[serde(
1254            rename = "contactId",
1255            deserialize_with = "deserialize_number_from_string"
1256        )]
1257        contact_id: i64,
1258
1259        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1260        undocumented: HashMap<String, JsonObject>,
1261    },
1262    #[serde(rename = "userNotFoundByGroupId")]
1263    UserNotFoundByGroupId {
1264        #[serde(
1265            rename = "groupId",
1266            deserialize_with = "deserialize_number_from_string"
1267        )]
1268        group_id: i64,
1269
1270        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1271        undocumented: HashMap<String, JsonObject>,
1272    },
1273    #[serde(rename = "userNotFoundByFileId")]
1274    UserNotFoundByFileId {
1275        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1276        file_id: i64,
1277
1278        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1279        undocumented: HashMap<String, JsonObject>,
1280    },
1281    #[serde(rename = "userNotFoundByContactRequestId")]
1282    UserNotFoundByContactRequestId {
1283        #[serde(
1284            rename = "contactRequestId",
1285            deserialize_with = "deserialize_number_from_string"
1286        )]
1287        contact_request_id: i64,
1288
1289        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1290        undocumented: HashMap<String, JsonObject>,
1291    },
1292    #[serde(rename = "contactNotFound")]
1293    ContactNotFound {
1294        #[serde(
1295            rename = "contactId",
1296            deserialize_with = "deserialize_number_from_string"
1297        )]
1298        contact_id: i64,
1299
1300        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1301        undocumented: HashMap<String, JsonObject>,
1302    },
1303    #[serde(rename = "contactNotFoundByName")]
1304    ContactNotFoundByName {
1305        #[serde(rename = "contactName")]
1306        contact_name: String,
1307
1308        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1309        undocumented: HashMap<String, JsonObject>,
1310    },
1311    #[serde(rename = "contactNotFoundByMemberId")]
1312    ContactNotFoundByMemberId {
1313        #[serde(
1314            rename = "groupMemberId",
1315            deserialize_with = "deserialize_number_from_string"
1316        )]
1317        group_member_id: i64,
1318
1319        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1320        undocumented: HashMap<String, JsonObject>,
1321    },
1322    #[serde(rename = "contactNotReady")]
1323    ContactNotReady {
1324        #[serde(rename = "contactName")]
1325        contact_name: String,
1326
1327        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1328        undocumented: HashMap<String, JsonObject>,
1329    },
1330    #[serde(rename = "duplicateContactLink")]
1331    DuplicateContactLink,
1332    #[serde(rename = "userContactLinkNotFound")]
1333    UserContactLinkNotFound,
1334    #[serde(rename = "contactRequestNotFound")]
1335    ContactRequestNotFound {
1336        #[serde(
1337            rename = "contactRequestId",
1338            deserialize_with = "deserialize_number_from_string"
1339        )]
1340        contact_request_id: i64,
1341
1342        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1343        undocumented: HashMap<String, JsonObject>,
1344    },
1345    #[serde(rename = "contactRequestNotFoundByName")]
1346    ContactRequestNotFoundByName {
1347        #[serde(rename = "contactName")]
1348        contact_name: String,
1349
1350        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1351        undocumented: HashMap<String, JsonObject>,
1352    },
1353    #[serde(rename = "invalidContactRequestEntity")]
1354    InvalidContactRequestEntity {
1355        #[serde(
1356            rename = "contactRequestId",
1357            deserialize_with = "deserialize_number_from_string"
1358        )]
1359        contact_request_id: i64,
1360
1361        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1362        undocumented: HashMap<String, JsonObject>,
1363    },
1364    #[serde(rename = "invalidBusinessChatContactRequest")]
1365    InvalidBusinessChatContactRequest,
1366    #[serde(rename = "groupNotFound")]
1367    GroupNotFound {
1368        #[serde(
1369            rename = "groupId",
1370            deserialize_with = "deserialize_number_from_string"
1371        )]
1372        group_id: i64,
1373
1374        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1375        undocumented: HashMap<String, JsonObject>,
1376    },
1377    #[serde(rename = "groupNotFoundByName")]
1378    GroupNotFoundByName {
1379        #[serde(rename = "groupName")]
1380        group_name: String,
1381
1382        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1383        undocumented: HashMap<String, JsonObject>,
1384    },
1385    #[serde(rename = "groupMemberNameNotFound")]
1386    GroupMemberNameNotFound {
1387        #[serde(
1388            rename = "groupId",
1389            deserialize_with = "deserialize_number_from_string"
1390        )]
1391        group_id: i64,
1392
1393        #[serde(rename = "groupMemberName")]
1394        group_member_name: String,
1395
1396        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1397        undocumented: HashMap<String, JsonObject>,
1398    },
1399    #[serde(rename = "groupMemberNotFound")]
1400    GroupMemberNotFound {
1401        #[serde(
1402            rename = "groupMemberId",
1403            deserialize_with = "deserialize_number_from_string"
1404        )]
1405        group_member_id: i64,
1406
1407        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1408        undocumented: HashMap<String, JsonObject>,
1409    },
1410    #[serde(rename = "groupHostMemberNotFound")]
1411    GroupHostMemberNotFound {
1412        #[serde(
1413            rename = "groupId",
1414            deserialize_with = "deserialize_number_from_string"
1415        )]
1416        group_id: i64,
1417
1418        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1419        undocumented: HashMap<String, JsonObject>,
1420    },
1421    #[serde(rename = "groupMemberNotFoundByMemberId")]
1422    GroupMemberNotFoundByMemberId {
1423        #[serde(rename = "memberId")]
1424        member_id: String,
1425
1426        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1427        undocumented: HashMap<String, JsonObject>,
1428    },
1429    #[serde(rename = "memberContactGroupMemberNotFound")]
1430    MemberContactGroupMemberNotFound {
1431        #[serde(
1432            rename = "contactId",
1433            deserialize_with = "deserialize_number_from_string"
1434        )]
1435        contact_id: i64,
1436
1437        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1438        undocumented: HashMap<String, JsonObject>,
1439    },
1440    #[serde(rename = "groupWithoutUser")]
1441    GroupWithoutUser,
1442    #[serde(rename = "duplicateGroupMember")]
1443    DuplicateGroupMember,
1444    #[serde(rename = "groupAlreadyJoined")]
1445    GroupAlreadyJoined,
1446    #[serde(rename = "groupInvitationNotFound")]
1447    GroupInvitationNotFound,
1448    #[serde(rename = "noteFolderAlreadyExists")]
1449    NoteFolderAlreadyExists {
1450        #[serde(
1451            rename = "noteFolderId",
1452            deserialize_with = "deserialize_number_from_string"
1453        )]
1454        note_folder_id: i64,
1455
1456        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1457        undocumented: HashMap<String, JsonObject>,
1458    },
1459    #[serde(rename = "noteFolderNotFound")]
1460    NoteFolderNotFound {
1461        #[serde(
1462            rename = "noteFolderId",
1463            deserialize_with = "deserialize_number_from_string"
1464        )]
1465        note_folder_id: i64,
1466
1467        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1468        undocumented: HashMap<String, JsonObject>,
1469    },
1470    #[serde(rename = "userNoteFolderNotFound")]
1471    UserNoteFolderNotFound,
1472    #[serde(rename = "sndFileNotFound")]
1473    SndFileNotFound {
1474        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1475        file_id: i64,
1476
1477        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1478        undocumented: HashMap<String, JsonObject>,
1479    },
1480    #[serde(rename = "sndFileInvalid")]
1481    SndFileInvalid {
1482        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1483        file_id: i64,
1484
1485        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1486        undocumented: HashMap<String, JsonObject>,
1487    },
1488    #[serde(rename = "rcvFileNotFound")]
1489    RcvFileNotFound {
1490        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1491        file_id: i64,
1492
1493        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1494        undocumented: HashMap<String, JsonObject>,
1495    },
1496    #[serde(rename = "rcvFileDescrNotFound")]
1497    RcvFileDescrNotFound {
1498        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1499        file_id: i64,
1500
1501        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1502        undocumented: HashMap<String, JsonObject>,
1503    },
1504    #[serde(rename = "fileNotFound")]
1505    FileNotFound {
1506        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1507        file_id: i64,
1508
1509        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1510        undocumented: HashMap<String, JsonObject>,
1511    },
1512    #[serde(rename = "rcvFileInvalid")]
1513    RcvFileInvalid {
1514        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1515        file_id: i64,
1516
1517        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1518        undocumented: HashMap<String, JsonObject>,
1519    },
1520    #[serde(rename = "rcvFileInvalidDescrPart")]
1521    RcvFileInvalidDescrPart,
1522    #[serde(rename = "localFileNoTransfer")]
1523    LocalFileNoTransfer {
1524        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1525        file_id: i64,
1526
1527        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1528        undocumented: HashMap<String, JsonObject>,
1529    },
1530    #[serde(rename = "sharedMsgIdNotFoundByFileId")]
1531    SharedMsgIdNotFoundByFileId {
1532        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1533        file_id: i64,
1534
1535        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1536        undocumented: HashMap<String, JsonObject>,
1537    },
1538    #[serde(rename = "fileIdNotFoundBySharedMsgId")]
1539    FileIdNotFoundBySharedMsgId {
1540        #[serde(rename = "sharedMsgId")]
1541        shared_msg_id: String,
1542
1543        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1544        undocumented: HashMap<String, JsonObject>,
1545    },
1546    #[serde(rename = "sndFileNotFoundXFTP")]
1547    SndFileNotFoundXftp {
1548        #[serde(rename = "agentSndFileId")]
1549        agent_snd_file_id: String,
1550
1551        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1552        undocumented: HashMap<String, JsonObject>,
1553    },
1554    #[serde(rename = "rcvFileNotFoundXFTP")]
1555    RcvFileNotFoundXftp {
1556        #[serde(rename = "agentRcvFileId")]
1557        agent_rcv_file_id: String,
1558
1559        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1560        undocumented: HashMap<String, JsonObject>,
1561    },
1562    #[serde(rename = "connectionNotFound")]
1563    ConnectionNotFound {
1564        #[serde(rename = "agentConnId")]
1565        agent_conn_id: String,
1566
1567        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1568        undocumented: HashMap<String, JsonObject>,
1569    },
1570    #[serde(rename = "connectionNotFoundById")]
1571    ConnectionNotFoundById {
1572        #[serde(rename = "connId", deserialize_with = "deserialize_number_from_string")]
1573        conn_id: i64,
1574
1575        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1576        undocumented: HashMap<String, JsonObject>,
1577    },
1578    #[serde(rename = "connectionNotFoundByMemberId")]
1579    ConnectionNotFoundByMemberId {
1580        #[serde(
1581            rename = "groupMemberId",
1582            deserialize_with = "deserialize_number_from_string"
1583        )]
1584        group_member_id: i64,
1585
1586        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1587        undocumented: HashMap<String, JsonObject>,
1588    },
1589    #[serde(rename = "pendingConnectionNotFound")]
1590    PendingConnectionNotFound {
1591        #[serde(rename = "connId", deserialize_with = "deserialize_number_from_string")]
1592        conn_id: i64,
1593
1594        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1595        undocumented: HashMap<String, JsonObject>,
1596    },
1597    #[serde(rename = "introNotFound")]
1598    IntroNotFound,
1599    #[serde(rename = "uniqueID")]
1600    UniqueId,
1601    #[serde(rename = "largeMsg")]
1602    LargeMsg,
1603    #[serde(rename = "internalError")]
1604    InternalError {
1605        #[serde(rename = "message")]
1606        message: String,
1607
1608        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1609        undocumented: HashMap<String, JsonObject>,
1610    },
1611    #[serde(rename = "dBException")]
1612    DBException {
1613        #[serde(rename = "message")]
1614        message: String,
1615
1616        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1617        undocumented: HashMap<String, JsonObject>,
1618    },
1619    #[serde(rename = "dBBusyError")]
1620    DBBusyError {
1621        #[serde(rename = "message")]
1622        message: String,
1623
1624        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1625        undocumented: HashMap<String, JsonObject>,
1626    },
1627    #[serde(rename = "badChatItem")]
1628    BadChatItem {
1629        #[serde(rename = "itemId", deserialize_with = "deserialize_number_from_string")]
1630        item_id: i64,
1631
1632        #[serde(rename = "itemTs", skip_serializing_if = "Option::is_none")]
1633        item_ts: Option<UtcTime>,
1634
1635        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1636        undocumented: HashMap<String, JsonObject>,
1637    },
1638    #[serde(rename = "chatItemNotFound")]
1639    ChatItemNotFound {
1640        #[serde(rename = "itemId", deserialize_with = "deserialize_number_from_string")]
1641        item_id: i64,
1642
1643        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1644        undocumented: HashMap<String, JsonObject>,
1645    },
1646    #[serde(rename = "chatItemNotFoundByText")]
1647    ChatItemNotFoundByText {
1648        #[serde(rename = "text")]
1649        text: String,
1650
1651        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1652        undocumented: HashMap<String, JsonObject>,
1653    },
1654    #[serde(rename = "chatItemSharedMsgIdNotFound")]
1655    ChatItemSharedMsgIdNotFound {
1656        #[serde(rename = "sharedMsgId")]
1657        shared_msg_id: String,
1658
1659        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1660        undocumented: HashMap<String, JsonObject>,
1661    },
1662    #[serde(rename = "chatItemNotFoundByFileId")]
1663    ChatItemNotFoundByFileId {
1664        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1665        file_id: i64,
1666
1667        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1668        undocumented: HashMap<String, JsonObject>,
1669    },
1670    #[serde(rename = "chatItemNotFoundByContactId")]
1671    ChatItemNotFoundByContactId {
1672        #[serde(
1673            rename = "contactId",
1674            deserialize_with = "deserialize_number_from_string"
1675        )]
1676        contact_id: i64,
1677
1678        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1679        undocumented: HashMap<String, JsonObject>,
1680    },
1681    #[serde(rename = "chatItemNotFoundByGroupId")]
1682    ChatItemNotFoundByGroupId {
1683        #[serde(
1684            rename = "groupId",
1685            deserialize_with = "deserialize_number_from_string"
1686        )]
1687        group_id: i64,
1688
1689        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1690        undocumented: HashMap<String, JsonObject>,
1691    },
1692    #[serde(rename = "profileNotFound")]
1693    ProfileNotFound {
1694        #[serde(
1695            rename = "profileId",
1696            deserialize_with = "deserialize_number_from_string"
1697        )]
1698        profile_id: i64,
1699
1700        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1701        undocumented: HashMap<String, JsonObject>,
1702    },
1703    #[serde(rename = "duplicateGroupLink")]
1704    DuplicateGroupLink {
1705        #[serde(rename = "groupInfo")]
1706        group_info: GroupInfo,
1707
1708        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1709        undocumented: HashMap<String, JsonObject>,
1710    },
1711    #[serde(rename = "groupLinkNotFound")]
1712    GroupLinkNotFound {
1713        #[serde(rename = "groupInfo")]
1714        group_info: GroupInfo,
1715
1716        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1717        undocumented: HashMap<String, JsonObject>,
1718    },
1719    #[serde(rename = "hostMemberIdNotFound")]
1720    HostMemberIdNotFound {
1721        #[serde(
1722            rename = "groupId",
1723            deserialize_with = "deserialize_number_from_string"
1724        )]
1725        group_id: i64,
1726
1727        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1728        undocumented: HashMap<String, JsonObject>,
1729    },
1730    #[serde(rename = "contactNotFoundByFileId")]
1731    ContactNotFoundByFileId {
1732        #[serde(rename = "fileId", deserialize_with = "deserialize_number_from_string")]
1733        file_id: i64,
1734
1735        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1736        undocumented: HashMap<String, JsonObject>,
1737    },
1738    #[serde(rename = "noGroupSndStatus")]
1739    NoGroupSndStatus {
1740        #[serde(rename = "itemId", deserialize_with = "deserialize_number_from_string")]
1741        item_id: i64,
1742
1743        #[serde(
1744            rename = "groupMemberId",
1745            deserialize_with = "deserialize_number_from_string"
1746        )]
1747        group_member_id: i64,
1748
1749        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1750        undocumented: HashMap<String, JsonObject>,
1751    },
1752    #[serde(rename = "duplicateGroupMessage")]
1753    DuplicateGroupMessage {
1754        #[serde(
1755            rename = "groupId",
1756            deserialize_with = "deserialize_number_from_string"
1757        )]
1758        group_id: i64,
1759
1760        #[serde(rename = "sharedMsgId")]
1761        shared_msg_id: String,
1762
1763        #[serde(
1764            rename = "authorGroupMemberId",
1765            skip_serializing_if = "Option::is_none",
1766            deserialize_with = "deserialize_option_number_from_string",
1767            default
1768        )]
1769        author_group_member_id: Option<i64>,
1770
1771        #[serde(
1772            rename = "forwardedByGroupMemberId",
1773            skip_serializing_if = "Option::is_none",
1774            deserialize_with = "deserialize_option_number_from_string",
1775            default
1776        )]
1777        forwarded_by_group_member_id: Option<i64>,
1778
1779        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1780        undocumented: HashMap<String, JsonObject>,
1781    },
1782    #[serde(rename = "remoteHostNotFound")]
1783    RemoteHostNotFound {
1784        #[serde(
1785            rename = "remoteHostId",
1786            deserialize_with = "deserialize_number_from_string"
1787        )]
1788        remote_host_id: i64,
1789
1790        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1791        undocumented: HashMap<String, JsonObject>,
1792    },
1793    #[serde(rename = "remoteHostUnknown")]
1794    RemoteHostUnknown,
1795    #[serde(rename = "remoteHostDuplicateCA")]
1796    RemoteHostDuplicateCa,
1797    #[serde(rename = "remoteCtrlNotFound")]
1798    RemoteCtrlNotFound {
1799        #[serde(
1800            rename = "remoteCtrlId",
1801            deserialize_with = "deserialize_number_from_string"
1802        )]
1803        remote_ctrl_id: i64,
1804
1805        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1806        undocumented: HashMap<String, JsonObject>,
1807    },
1808    #[serde(rename = "remoteCtrlDuplicateCA")]
1809    RemoteCtrlDuplicateCa,
1810    #[serde(rename = "prohibitedDeleteUser")]
1811    ProhibitedDeleteUser {
1812        #[serde(rename = "userId", deserialize_with = "deserialize_number_from_string")]
1813        user_id: i64,
1814
1815        #[serde(
1816            rename = "contactId",
1817            deserialize_with = "deserialize_number_from_string"
1818        )]
1819        contact_id: i64,
1820
1821        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1822        undocumented: HashMap<String, JsonObject>,
1823    },
1824    #[serde(rename = "operatorNotFound")]
1825    OperatorNotFound {
1826        #[serde(
1827            rename = "serverOperatorId",
1828            deserialize_with = "deserialize_number_from_string"
1829        )]
1830        server_operator_id: i64,
1831
1832        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1833        undocumented: HashMap<String, JsonObject>,
1834    },
1835    #[serde(rename = "usageConditionsNotFound")]
1836    UsageConditionsNotFound,
1837    #[serde(rename = "invalidQuote")]
1838    InvalidQuote,
1839    #[serde(rename = "invalidMention")]
1840    InvalidMention,
1841    #[serde(untagged)]
1842    Undocumented(JsonObject),
1843}
1844
1845#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1846#[serde(tag = "type")]
1847#[non_exhaustive]
1848pub enum TransportError {
1849    #[serde(rename = "badBlock")]
1850    BadBlock,
1851    #[serde(rename = "version")]
1852    Version,
1853    #[serde(rename = "largeMsg")]
1854    LargeMsg,
1855    #[serde(rename = "badSession")]
1856    BadSession,
1857    #[serde(rename = "noServerAuth")]
1858    NoServerAuth,
1859    #[serde(rename = "handshake")]
1860    Handshake {
1861        #[serde(rename = "handshakeErr")]
1862        handshake_err: HandshakeError,
1863
1864        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1865        undocumented: HashMap<String, JsonObject>,
1866    },
1867    #[serde(untagged)]
1868    Undocumented(JsonObject),
1869}
1870
1871#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1872#[serde(tag = "type")]
1873#[non_exhaustive]
1874pub enum XFTPErrorType {
1875    #[serde(rename = "BLOCK")]
1876    Block,
1877    #[serde(rename = "SESSION")]
1878    Session,
1879    #[serde(rename = "HANDSHAKE")]
1880    Handshake,
1881    #[serde(rename = "CMD")]
1882    Cmd {
1883        #[serde(rename = "cmdErr")]
1884        cmd_err: CommandError,
1885
1886        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1887        undocumented: HashMap<String, JsonObject>,
1888    },
1889    #[serde(rename = "AUTH")]
1890    Auth,
1891    #[serde(rename = "BLOCKED")]
1892    Blocked {
1893        #[serde(rename = "blockInfo")]
1894        block_info: BlockingInfo,
1895
1896        #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
1897        undocumented: HashMap<String, JsonObject>,
1898    },
1899    #[serde(rename = "SIZE")]
1900    Size,
1901    #[serde(rename = "QUOTA")]
1902    Quota,
1903    #[serde(rename = "DIGEST")]
1904    Digest,
1905    #[serde(rename = "CRYPTO")]
1906    Crypto,
1907    #[serde(rename = "NO_FILE")]
1908    NoFile,
1909    #[serde(rename = "HAS_FILE")]
1910    HasFile,
1911    #[serde(rename = "FILE_IO")]
1912    FileIo,
1913    #[serde(rename = "TIMEOUT")]
1914    Timeout,
1915    #[serde(rename = "INTERNAL")]
1916    Internal,
1917    #[serde(rename = "DUPLICATE_")]
1918    Duplicate,
1919    #[serde(untagged)]
1920    Undocumented(JsonObject),
1921}
1922
1923macro_rules! impl_error {
1924    ($($t:ty),+ $(,)?) => (
1925        $(
1926        impl std::fmt::Display for $t {
1927            fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1928                write!(f, "{:#?}", self)
1929            }
1930        }
1931
1932        impl std::error::Error for $t {}
1933        )+
1934    );
1935}
1936
1937impl_error!(
1938    AgentCryptoError,
1939    AgentErrorType,
1940    BrokerErrorType,
1941    ChatError,
1942    ChatErrorType,
1943    CommandError,
1944    CommandErrorType,
1945    ConnectionErrorType,
1946    ErrorType,
1947    FileError,
1948    FileErrorType,
1949    HandshakeError,
1950    MsgDecryptError,
1951    MsgErrorType,
1952    ProxyClientError,
1953    ProxyError,
1954    RCErrorType,
1955    SMPAgentError,
1956    SndError,
1957    SrvError,
1958    StoreError,
1959    TransportError,
1960    XFTPErrorType
1961);