1#![allow(clippy::enum_variant_names)]
7#![allow(clippy::missing_docs_in_private_items)]
8#![allow(missing_docs)]
9#![allow(non_snake_case)]
10
11use serde::{Deserialize, Serialize};
25use std::collections::HashMap;
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct FilesUploadResponse {
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub error: Option<String>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub file: Option<File>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub needed: Option<String>,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub ok: Option<bool>,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub provided: Option<String>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct File {
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub access: Option<String>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub alt_txt: Option<String>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub app_id: Option<String>,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub app_name: Option<String>,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub bot_id: Option<String>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub can_toggle_canvas_lock: Option<bool>,
64
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub canvas_template_mode: Option<String>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub cc: Option<Vec<Cc>>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub channel_actions_count: Option<i64>,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub channel_actions_ts: Option<String>,
76
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub channels: Option<Vec<String>>,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub comments_count: Option<i64>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub converted_pdf: Option<String>,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub created: Option<i64>,
88
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub deanimate: Option<String>,
91
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub deanimate_gif: Option<String>,
94
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub display_as_bot: Option<bool>,
97
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub dm_mpdm_users_with_file_access: Option<Vec<DmMpdmUsersWithFileAccess>>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
102 pub duration_ms: Option<i64>,
103
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub edit_link: Option<String>,
106
107 #[serde(skip_serializing_if = "Option::is_none")]
108 pub edit_timestamp: Option<i64>,
109
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub editable: Option<bool>,
112
113 #[serde(skip_serializing_if = "Option::is_none")]
114 pub editor: Option<String>,
115
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub editors: Option<Vec<String>>,
118
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub external_id: Option<String>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub external_type: Option<String>,
124
125 #[serde(skip_serializing_if = "Option::is_none")]
126 pub external_url: Option<String>,
127
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub favorites: Option<Vec<Favorite>>,
130
131 #[serde(skip_serializing_if = "Option::is_none")]
132 pub file_access: Option<String>,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub filetype: Option<String>,
136
137 #[serde(skip_serializing_if = "Option::is_none")]
138 pub from: Option<Vec<Cc>>,
139
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub groups: Option<Vec<String>>,
142
143 #[serde(skip_serializing_if = "Option::is_none")]
144 pub has_more: Option<bool>,
145
146 #[serde(skip_serializing_if = "Option::is_none")]
147 pub has_more_shares: Option<bool>,
148
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub has_rich_preview: Option<bool>,
151
152 #[serde(skip_serializing_if = "Option::is_none")]
153 pub headers: Option<Headers>,
154
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub hls: Option<String>,
157
158 #[serde(skip_serializing_if = "Option::is_none")]
159 pub hls_embed: Option<String>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
162 pub id: Option<String>,
163
164 #[serde(skip_serializing_if = "Option::is_none")]
165 pub image_exif_rotation: Option<i64>,
166
167 #[serde(skip_serializing_if = "Option::is_none")]
168 pub ims: Option<Vec<String>>,
169
170 #[serde(skip_serializing_if = "Option::is_none")]
171 pub initial_comment: Option<InitialComment>,
172
173 #[serde(skip_serializing_if = "Option::is_none")]
174 pub is_channel_space: Option<bool>,
175
176 #[serde(skip_serializing_if = "Option::is_none")]
177 pub is_external: Option<bool>,
178
179 #[serde(skip_serializing_if = "Option::is_none")]
180 pub is_public: Option<bool>,
181
182 #[serde(skip_serializing_if = "Option::is_none")]
183 pub is_starred: Option<bool>,
184
185 #[serde(skip_serializing_if = "Option::is_none")]
186 pub last_editor: Option<String>,
187
188 #[serde(skip_serializing_if = "Option::is_none")]
189 pub last_read: Option<i64>,
190
191 #[serde(skip_serializing_if = "Option::is_none")]
192 pub lines: Option<i64>,
193
194 #[serde(skip_serializing_if = "Option::is_none")]
195 pub lines_more: Option<i64>,
196
197 #[serde(skip_serializing_if = "Option::is_none")]
198 pub linked_channel_id: Option<String>,
199
200 #[serde(skip_serializing_if = "Option::is_none")]
201 pub list_limits: Option<ListLimits>,
202
203 #[serde(skip_serializing_if = "Option::is_none")]
204 pub list_metadata: Option<ListMetadata>,
205
206 #[serde(skip_serializing_if = "Option::is_none")]
207 pub media_display_type: Option<String>,
208
209 #[serde(skip_serializing_if = "Option::is_none")]
210 pub media_progress: Option<MediaProgress>,
211
212 #[serde(skip_serializing_if = "Option::is_none")]
213 pub mimetype: Option<String>,
214
215 #[serde(skip_serializing_if = "Option::is_none")]
216 pub mode: Option<String>,
217
218 #[serde(skip_serializing_if = "Option::is_none")]
219 pub mp4: Option<String>,
220
221 #[serde(skip_serializing_if = "Option::is_none")]
222 pub mp4_low: Option<String>,
223
224 #[serde(skip_serializing_if = "Option::is_none")]
225 pub name: Option<String>,
226
227 #[serde(skip_serializing_if = "Option::is_none")]
228 pub non_owner_editable: Option<bool>,
229
230 #[serde(skip_serializing_if = "Option::is_none")]
231 pub num_stars: Option<i64>,
232
233 #[serde(skip_serializing_if = "Option::is_none")]
234 pub org_or_workspace_access: Option<String>,
235
236 #[serde(skip_serializing_if = "Option::is_none")]
237 pub original_attachment_count: Option<i64>,
238
239 #[serde(skip_serializing_if = "Option::is_none")]
240 pub original_h: Option<String>,
241
242 #[serde(skip_serializing_if = "Option::is_none")]
243 pub original_w: Option<String>,
244
245 #[serde(skip_serializing_if = "Option::is_none")]
246 pub permalink: Option<String>,
247
248 #[serde(skip_serializing_if = "Option::is_none")]
249 pub permalink_public: Option<String>,
250
251 #[serde(skip_serializing_if = "Option::is_none")]
252 pub pinned_to: Option<Vec<String>>,
253
254 #[serde(skip_serializing_if = "Option::is_none")]
255 pub pjpeg: Option<String>,
256
257 #[serde(skip_serializing_if = "Option::is_none")]
258 pub plain_text: Option<String>,
259
260 #[serde(skip_serializing_if = "Option::is_none")]
261 pub pretty_type: Option<String>,
262
263 #[serde(skip_serializing_if = "Option::is_none")]
264 pub preview: Option<String>,
265
266 #[serde(skip_serializing_if = "Option::is_none")]
267 pub preview_highlight: Option<String>,
268
269 #[serde(skip_serializing_if = "Option::is_none")]
270 pub preview_is_truncated: Option<bool>,
271
272 #[serde(skip_serializing_if = "Option::is_none")]
273 pub preview_plain_text: Option<String>,
274
275 #[serde(skip_serializing_if = "Option::is_none")]
276 pub private_channels_with_file_access_count: Option<i64>,
277
278 #[serde(skip_serializing_if = "Option::is_none")]
279 pub private_file_with_access_count: Option<i64>,
280
281 #[serde(skip_serializing_if = "Option::is_none")]
282 pub public_url_shared: Option<bool>,
283
284 #[serde(skip_serializing_if = "Option::is_none")]
285 pub quip_thread_id: Option<String>,
286
287 #[serde(skip_serializing_if = "Option::is_none")]
288 pub reactions: Option<Vec<Reaction>>,
289
290 #[serde(skip_serializing_if = "Option::is_none")]
291 pub saved: Option<Saved>,
292
293 #[serde(skip_serializing_if = "Option::is_none")]
294 pub sent_to_self: Option<bool>,
295
296 #[serde(skip_serializing_if = "Option::is_none")]
297 pub shares: Option<Shares>,
298
299 #[serde(skip_serializing_if = "Option::is_none")]
300 pub show_badge: Option<bool>,
301
302 #[serde(skip_serializing_if = "Option::is_none")]
303 pub simplified_html: Option<String>,
304
305 #[serde(skip_serializing_if = "Option::is_none")]
306 pub size: Option<i64>,
307
308 #[serde(skip_serializing_if = "Option::is_none")]
309 pub source_team: Option<String>,
310
311 #[serde(skip_serializing_if = "Option::is_none")]
312 pub subject: Option<String>,
313
314 #[serde(skip_serializing_if = "Option::is_none")]
315 pub subtype: Option<String>,
316
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub team_pref_version_history_enabled: Option<bool>,
319
320 #[serde(skip_serializing_if = "Option::is_none")]
321 pub teams_shared_with: Option<Vec<Option<serde_json::Value>>>,
322
323 #[serde(skip_serializing_if = "Option::is_none")]
324 pub template_conversion_ts: Option<i64>,
325
326 #[serde(skip_serializing_if = "Option::is_none")]
327 pub template_description: Option<String>,
328
329 #[serde(skip_serializing_if = "Option::is_none")]
330 pub template_icon: Option<String>,
331
332 #[serde(skip_serializing_if = "Option::is_none")]
333 pub template_name: Option<String>,
334
335 #[serde(skip_serializing_if = "Option::is_none")]
336 pub template_title: Option<String>,
337
338 #[serde(skip_serializing_if = "Option::is_none")]
339 pub thumb_1024: Option<String>,
340
341 #[serde(rename = "thumb_1024_gif")]
342 #[serde(skip_serializing_if = "Option::is_none")]
343 pub thumb_1024__gif: Option<String>,
344
345 #[serde(rename = "thumb_1024_h")]
346 #[serde(skip_serializing_if = "Option::is_none")]
347 pub thumb_1024__h: Option<String>,
348
349 #[serde(rename = "thumb_1024_w")]
350 #[serde(skip_serializing_if = "Option::is_none")]
351 pub thumb_1024__w: Option<String>,
352
353 #[serde(skip_serializing_if = "Option::is_none")]
354 pub thumb_160: Option<String>,
355
356 #[serde(rename = "thumb_160_gif")]
357 #[serde(skip_serializing_if = "Option::is_none")]
358 pub thumb_160__gif: Option<String>,
359
360 #[serde(rename = "thumb_160_h")]
361 #[serde(skip_serializing_if = "Option::is_none")]
362 pub thumb_160__h: Option<String>,
363
364 #[serde(rename = "thumb_160_w")]
365 #[serde(skip_serializing_if = "Option::is_none")]
366 pub thumb_160__w: Option<String>,
367
368 #[serde(skip_serializing_if = "Option::is_none")]
369 pub thumb_360: Option<String>,
370
371 #[serde(rename = "thumb_360_gif")]
372 #[serde(skip_serializing_if = "Option::is_none")]
373 pub thumb_360__gif: Option<String>,
374
375 #[serde(rename = "thumb_360_h")]
376 #[serde(skip_serializing_if = "Option::is_none")]
377 pub thumb_360__h: Option<String>,
378
379 #[serde(rename = "thumb_360_w")]
380 #[serde(skip_serializing_if = "Option::is_none")]
381 pub thumb_360__w: Option<String>,
382
383 #[serde(skip_serializing_if = "Option::is_none")]
384 pub thumb_480: Option<String>,
385
386 #[serde(rename = "thumb_480_gif")]
387 #[serde(skip_serializing_if = "Option::is_none")]
388 pub thumb_480__gif: Option<String>,
389
390 #[serde(rename = "thumb_480_h")]
391 #[serde(skip_serializing_if = "Option::is_none")]
392 pub thumb_480__h: Option<String>,
393
394 #[serde(rename = "thumb_480_w")]
395 #[serde(skip_serializing_if = "Option::is_none")]
396 pub thumb_480__w: Option<String>,
397
398 #[serde(skip_serializing_if = "Option::is_none")]
399 pub thumb_64: Option<String>,
400
401 #[serde(rename = "thumb_64_gif")]
402 #[serde(skip_serializing_if = "Option::is_none")]
403 pub thumb_64__gif: Option<String>,
404
405 #[serde(rename = "thumb_64_h")]
406 #[serde(skip_serializing_if = "Option::is_none")]
407 pub thumb_64__h: Option<String>,
408
409 #[serde(rename = "thumb_64_w")]
410 #[serde(skip_serializing_if = "Option::is_none")]
411 pub thumb_64__w: Option<String>,
412
413 #[serde(skip_serializing_if = "Option::is_none")]
414 pub thumb_720: Option<String>,
415
416 #[serde(rename = "thumb_720_gif")]
417 #[serde(skip_serializing_if = "Option::is_none")]
418 pub thumb_720__gif: Option<String>,
419
420 #[serde(rename = "thumb_720_h")]
421 #[serde(skip_serializing_if = "Option::is_none")]
422 pub thumb_720__h: Option<String>,
423
424 #[serde(rename = "thumb_720_w")]
425 #[serde(skip_serializing_if = "Option::is_none")]
426 pub thumb_720__w: Option<String>,
427
428 #[serde(skip_serializing_if = "Option::is_none")]
429 pub thumb_80: Option<String>,
430
431 #[serde(skip_serializing_if = "Option::is_none")]
432 pub thumb_800: Option<String>,
433
434 #[serde(rename = "thumb_800_gif")]
435 #[serde(skip_serializing_if = "Option::is_none")]
436 pub thumb_800__gif: Option<String>,
437
438 #[serde(rename = "thumb_800_h")]
439 #[serde(skip_serializing_if = "Option::is_none")]
440 pub thumb_800__h: Option<String>,
441
442 #[serde(rename = "thumb_800_w")]
443 #[serde(skip_serializing_if = "Option::is_none")]
444 pub thumb_800__w: Option<String>,
445
446 #[serde(rename = "thumb_80_gif")]
447 #[serde(skip_serializing_if = "Option::is_none")]
448 pub thumb_80__gif: Option<String>,
449
450 #[serde(rename = "thumb_80_h")]
451 #[serde(skip_serializing_if = "Option::is_none")]
452 pub thumb_80__h: Option<String>,
453
454 #[serde(rename = "thumb_80_w")]
455 #[serde(skip_serializing_if = "Option::is_none")]
456 pub thumb_80__w: Option<String>,
457
458 #[serde(skip_serializing_if = "Option::is_none")]
459 pub thumb_960: Option<String>,
460
461 #[serde(rename = "thumb_960_gif")]
462 #[serde(skip_serializing_if = "Option::is_none")]
463 pub thumb_960__gif: Option<String>,
464
465 #[serde(rename = "thumb_960_h")]
466 #[serde(skip_serializing_if = "Option::is_none")]
467 pub thumb_960__h: Option<String>,
468
469 #[serde(rename = "thumb_960_w")]
470 #[serde(skip_serializing_if = "Option::is_none")]
471 pub thumb_960__w: Option<String>,
472
473 #[serde(skip_serializing_if = "Option::is_none")]
474 pub thumb_gif: Option<String>,
475
476 #[serde(skip_serializing_if = "Option::is_none")]
477 pub thumb_pdf: Option<String>,
478
479 #[serde(skip_serializing_if = "Option::is_none")]
480 pub thumb_pdf_h: Option<String>,
481
482 #[serde(skip_serializing_if = "Option::is_none")]
483 pub thumb_pdf_w: Option<String>,
484
485 #[serde(skip_serializing_if = "Option::is_none")]
486 pub thumb_tiny: Option<String>,
487
488 #[serde(skip_serializing_if = "Option::is_none")]
489 pub thumb_video: Option<String>,
490
491 #[serde(skip_serializing_if = "Option::is_none")]
492 pub thumb_video_h: Option<i64>,
493
494 #[serde(skip_serializing_if = "Option::is_none")]
495 pub thumb_video_w: Option<i64>,
496
497 #[serde(skip_serializing_if = "Option::is_none")]
498 pub timestamp: Option<i64>,
499
500 #[serde(skip_serializing_if = "Option::is_none")]
501 pub title: Option<String>,
502
503 #[serde(skip_serializing_if = "Option::is_none")]
504 pub title_blocks: Option<Vec<TitleBlock>>,
505
506 #[serde(skip_serializing_if = "Option::is_none")]
507 pub to: Option<Vec<Cc>>,
508
509 #[serde(skip_serializing_if = "Option::is_none")]
510 pub transcription: Option<Transcription>,
511
512 #[serde(skip_serializing_if = "Option::is_none")]
513 pub update_notification: Option<i64>,
514
515 #[serde(skip_serializing_if = "Option::is_none")]
516 pub updated: Option<i64>,
517
518 #[serde(skip_serializing_if = "Option::is_none")]
519 pub url_private: Option<String>,
520
521 #[serde(skip_serializing_if = "Option::is_none")]
522 pub url_private_download: Option<String>,
523
524 #[serde(skip_serializing_if = "Option::is_none")]
525 pub url_static_preview: Option<String>,
526
527 #[serde(skip_serializing_if = "Option::is_none")]
528 pub user: Option<String>,
529
530 #[serde(skip_serializing_if = "Option::is_none")]
531 pub user_team: Option<String>,
532
533 #[serde(skip_serializing_if = "Option::is_none")]
534 pub username: Option<String>,
535
536 #[serde(skip_serializing_if = "Option::is_none")]
537 pub vtt: Option<String>,
538}
539
540#[derive(Debug, Clone, Serialize, Deserialize)]
541pub struct Cc {
542 #[serde(skip_serializing_if = "Option::is_none")]
543 pub address: Option<String>,
544
545 #[serde(skip_serializing_if = "Option::is_none")]
546 pub name: Option<String>,
547
548 #[serde(skip_serializing_if = "Option::is_none")]
549 pub original: Option<String>,
550}
551
552#[derive(Debug, Clone, Serialize, Deserialize)]
553pub struct DmMpdmUsersWithFileAccess {
554 #[serde(skip_serializing_if = "Option::is_none")]
555 pub access: Option<String>,
556
557 #[serde(skip_serializing_if = "Option::is_none")]
558 pub user_id: Option<String>,
559}
560
561#[derive(Debug, Clone, Serialize, Deserialize)]
562pub struct Favorite {
563 #[serde(skip_serializing_if = "Option::is_none")]
564 pub collection_id: Option<String>,
565
566 #[serde(skip_serializing_if = "Option::is_none")]
567 pub collection_name: Option<String>,
568
569 #[serde(skip_serializing_if = "Option::is_none")]
570 pub position: Option<String>,
571}
572
573#[derive(Debug, Clone, Serialize, Deserialize)]
574pub struct Headers {
575 #[serde(skip_serializing_if = "Option::is_none")]
576 pub date: Option<String>,
577
578 #[serde(skip_serializing_if = "Option::is_none")]
579 pub in_reply_to: Option<String>,
580
581 #[serde(skip_serializing_if = "Option::is_none")]
582 pub message_id: Option<String>,
583
584 #[serde(skip_serializing_if = "Option::is_none")]
585 pub reply_to: Option<String>,
586}
587
588#[derive(Debug, Clone, Serialize, Deserialize)]
589pub struct InitialComment {
590 #[serde(skip_serializing_if = "Option::is_none")]
591 pub channel: Option<String>,
592
593 #[serde(skip_serializing_if = "Option::is_none")]
594 pub comment: Option<String>,
595
596 #[serde(skip_serializing_if = "Option::is_none")]
597 pub created: Option<i64>,
598
599 #[serde(skip_serializing_if = "Option::is_none")]
600 pub id: Option<String>,
601
602 #[serde(skip_serializing_if = "Option::is_none")]
603 pub is_intro: Option<bool>,
604
605 #[serde(skip_serializing_if = "Option::is_none")]
606 pub timestamp: Option<i64>,
607
608 #[serde(skip_serializing_if = "Option::is_none")]
609 pub user: Option<String>,
610}
611
612#[derive(Debug, Clone, Serialize, Deserialize)]
613pub struct ListLimits {
614 #[serde(skip_serializing_if = "Option::is_none")]
615 pub column_count: Option<i64>,
616
617 #[serde(skip_serializing_if = "Option::is_none")]
618 pub column_count_limit: Option<i64>,
619
620 #[serde(skip_serializing_if = "Option::is_none")]
621 pub over_column_maximum: Option<bool>,
622
623 #[serde(skip_serializing_if = "Option::is_none")]
624 pub over_row_maximum: Option<bool>,
625
626 #[serde(skip_serializing_if = "Option::is_none")]
627 pub over_view_maximum: Option<bool>,
628
629 #[serde(skip_serializing_if = "Option::is_none")]
630 pub row_count: Option<i64>,
631
632 #[serde(skip_serializing_if = "Option::is_none")]
633 pub row_count_limit: Option<i64>,
634
635 #[serde(skip_serializing_if = "Option::is_none")]
636 pub view_count: Option<i64>,
637
638 #[serde(skip_serializing_if = "Option::is_none")]
639 pub view_count_limit: Option<i64>,
640}
641
642#[derive(Debug, Clone, Serialize, Deserialize)]
643pub struct ListMetadata {
644 #[serde(skip_serializing_if = "Option::is_none")]
645 pub creation_source: Option<CreationSource>,
646
647 #[serde(skip_serializing_if = "Option::is_none")]
648 pub description: Option<String>,
649
650 #[serde(skip_serializing_if = "Option::is_none")]
651 pub icon: Option<String>,
652
653 #[serde(skip_serializing_if = "Option::is_none")]
654 pub icon_team_id: Option<String>,
655
656 #[serde(skip_serializing_if = "Option::is_none")]
657 pub icon_url: Option<String>,
658
659 #[serde(skip_serializing_if = "Option::is_none")]
660 pub integrations: Option<Vec<String>>,
661
662 #[serde(skip_serializing_if = "Option::is_none")]
663 pub is_trial: Option<bool>,
664
665 #[serde(skip_serializing_if = "Option::is_none")]
666 pub schema: Option<Vec<Schema>>,
667
668 #[serde(skip_serializing_if = "Option::is_none")]
669 pub views: Option<Vec<View>>,
670}
671
672#[derive(Debug, Clone, Serialize, Deserialize)]
673pub struct CreationSource {
674 #[serde(rename = "type")]
675 #[serde(skip_serializing_if = "Option::is_none")]
676 pub creation_source_type: Option<String>,
677
678 #[serde(skip_serializing_if = "Option::is_none")]
679 pub reference_id: Option<String>,
680
681 #[serde(skip_serializing_if = "Option::is_none")]
682 pub workflow_function_id: Option<String>,
683}
684
685#[derive(Debug, Clone, Serialize, Deserialize)]
686pub struct Schema {
687 #[serde(skip_serializing_if = "Option::is_none")]
688 pub id: Option<String>,
689
690 #[serde(skip_serializing_if = "Option::is_none")]
691 pub is_primary_column: Option<bool>,
692
693 #[serde(skip_serializing_if = "Option::is_none")]
694 pub key: Option<String>,
695
696 #[serde(skip_serializing_if = "Option::is_none")]
697 pub name: Option<String>,
698
699 #[serde(skip_serializing_if = "Option::is_none")]
700 pub options: Option<Options>,
701
702 #[serde(rename = "type")]
703 #[serde(skip_serializing_if = "Option::is_none")]
704 pub schema_type: Option<String>,
705}
706
707#[derive(Debug, Clone, Serialize, Deserialize)]
708pub struct Options {
709 #[serde(skip_serializing_if = "Option::is_none")]
710 pub canvas_id: Option<String>,
711
712 #[serde(skip_serializing_if = "Option::is_none")]
713 pub canvas_placeholder_mapping: Option<Vec<CanvasPlaceholderMapping>>,
714
715 #[serde(skip_serializing_if = "Option::is_none")]
716 pub choices: Option<Vec<Choice>>,
717
718 #[serde(skip_serializing_if = "Option::is_none")]
719 pub currency: Option<String>,
720
721 #[serde(skip_serializing_if = "Option::is_none")]
722 pub currency_format: Option<String>,
723
724 #[serde(skip_serializing_if = "Option::is_none")]
725 pub date_format: Option<String>,
726
727 #[serde(skip_serializing_if = "Option::is_none")]
728 pub default_value: Option<String>,
729
730 #[serde(skip_serializing_if = "Option::is_none")]
731 pub default_value_typed: Option<DefaultValueTyped>,
732
733 #[serde(skip_serializing_if = "Option::is_none")]
734 pub emoji: Option<String>,
735
736 #[serde(skip_serializing_if = "Option::is_none")]
737 pub emoji_team_id: Option<String>,
738
739 #[serde(skip_serializing_if = "Option::is_none")]
740 pub for_assignment: Option<bool>,
741
742 #[serde(skip_serializing_if = "Option::is_none")]
743 pub format: Option<String>,
744
745 #[serde(skip_serializing_if = "Option::is_none")]
746 pub linked_to: Option<Vec<String>>,
747
748 #[serde(skip_serializing_if = "Option::is_none")]
749 pub mark_as_done_when_checked: Option<bool>,
750
751 #[serde(skip_serializing_if = "Option::is_none")]
752 pub max: Option<i64>,
753
754 #[serde(skip_serializing_if = "Option::is_none")]
755 pub notify_users: Option<bool>,
756
757 #[serde(skip_serializing_if = "Option::is_none")]
758 pub precision: Option<i64>,
759
760 #[serde(skip_serializing_if = "Option::is_none")]
761 pub rounding: Option<String>,
762
763 #[serde(skip_serializing_if = "Option::is_none")]
764 pub show_member_name: Option<bool>,
765
766 #[serde(skip_serializing_if = "Option::is_none")]
767 pub time_format: Option<String>,
768}
769
770#[derive(Debug, Clone, Serialize, Deserialize)]
771pub struct CanvasPlaceholderMapping {
772 #[serde(skip_serializing_if = "Option::is_none")]
773 pub column: Option<String>,
774
775 #[serde(skip_serializing_if = "Option::is_none")]
776 pub variable: Option<String>,
777}
778
779#[derive(Debug, Clone, Serialize, Deserialize)]
780pub struct Choice {
781 #[serde(skip_serializing_if = "Option::is_none")]
782 pub color: Option<String>,
783
784 #[serde(skip_serializing_if = "Option::is_none")]
785 pub label: Option<String>,
786
787 #[serde(skip_serializing_if = "Option::is_none")]
788 pub value: Option<String>,
789}
790
791#[derive(Debug, Clone, Serialize, Deserialize)]
792pub struct DefaultValueTyped {
793 #[serde(skip_serializing_if = "Option::is_none")]
794 pub select: Option<Vec<String>>,
795}
796
797#[derive(Debug, Clone, Serialize, Deserialize)]
798pub struct View {
799 #[serde(skip_serializing_if = "Option::is_none")]
800 pub columns: Option<Vec<Column>>,
801
802 #[serde(skip_serializing_if = "Option::is_none")]
803 pub created_by: Option<String>,
804
805 #[serde(skip_serializing_if = "Option::is_none")]
806 pub date_created: Option<i64>,
807
808 #[serde(skip_serializing_if = "Option::is_none")]
809 pub id: Option<String>,
810
811 #[serde(skip_serializing_if = "Option::is_none")]
812 pub is_all_items_view: Option<bool>,
813
814 #[serde(skip_serializing_if = "Option::is_none")]
815 pub is_locked: Option<bool>,
816
817 #[serde(skip_serializing_if = "Option::is_none")]
818 pub name: Option<String>,
819
820 #[serde(skip_serializing_if = "Option::is_none")]
821 pub position: Option<String>,
822
823 #[serde(skip_serializing_if = "Option::is_none")]
824 pub stick_column_left: Option<bool>,
825
826 #[serde(rename = "type")]
827 #[serde(skip_serializing_if = "Option::is_none")]
828 pub view_type: Option<String>,
829}
830
831#[derive(Debug, Clone, Serialize, Deserialize)]
832pub struct Column {
833 #[serde(skip_serializing_if = "Option::is_none")]
834 pub id: Option<String>,
835
836 #[serde(skip_serializing_if = "Option::is_none")]
837 pub key: Option<String>,
838
839 #[serde(skip_serializing_if = "Option::is_none")]
840 pub position: Option<String>,
841
842 #[serde(skip_serializing_if = "Option::is_none")]
843 pub visible: Option<bool>,
844
845 #[serde(skip_serializing_if = "Option::is_none")]
846 pub width: Option<i64>,
847}
848
849#[derive(Debug, Clone, Serialize, Deserialize)]
850pub struct MediaProgress {
851 #[serde(skip_serializing_if = "Option::is_none")]
852 pub duration_ms: Option<i64>,
853
854 #[serde(skip_serializing_if = "Option::is_none")]
855 pub max_offset_ms: Option<i64>,
856
857 #[serde(skip_serializing_if = "Option::is_none")]
858 pub offset_ms: Option<i64>,
859}
860
861#[derive(Debug, Clone, Serialize, Deserialize)]
862pub struct Reaction {
863 #[serde(skip_serializing_if = "Option::is_none")]
864 pub count: Option<i64>,
865
866 #[serde(skip_serializing_if = "Option::is_none")]
867 pub name: Option<String>,
868
869 #[serde(skip_serializing_if = "Option::is_none")]
870 pub url: Option<String>,
871
872 #[serde(skip_serializing_if = "Option::is_none")]
873 pub users: Option<Vec<String>>,
874}
875
876#[derive(Debug, Clone, Serialize, Deserialize)]
877pub struct Saved {
878 #[serde(skip_serializing_if = "Option::is_none")]
879 pub date_completed: Option<i64>,
880
881 #[serde(skip_serializing_if = "Option::is_none")]
882 pub date_due: Option<i64>,
883
884 #[serde(skip_serializing_if = "Option::is_none")]
885 pub is_archived: Option<bool>,
886
887 #[serde(skip_serializing_if = "Option::is_none")]
888 pub state: Option<String>,
889}
890
891#[derive(Debug, Clone, Serialize, Deserialize)]
892pub struct Shares {
893 #[serde(skip_serializing_if = "Option::is_none")]
894 pub private: Option<HashMap<String, Vec<Private>>>,
895
896 #[serde(skip_serializing_if = "Option::is_none")]
897 pub public: Option<HashMap<String, Vec<Private>>>,
898}
899
900#[derive(Debug, Clone, Serialize, Deserialize)]
901pub struct Private {
902 #[serde(skip_serializing_if = "Option::is_none")]
903 pub access: Option<String>,
904
905 #[serde(skip_serializing_if = "Option::is_none")]
906 pub channel_name: Option<String>,
907
908 #[serde(skip_serializing_if = "Option::is_none")]
909 pub date_last_shared: Option<i64>,
910
911 #[serde(skip_serializing_if = "Option::is_none")]
912 pub latest_reply: Option<String>,
913
914 #[serde(skip_serializing_if = "Option::is_none")]
915 pub reply_count: Option<i64>,
916
917 #[serde(skip_serializing_if = "Option::is_none")]
918 pub reply_users: Option<Vec<String>>,
919
920 #[serde(skip_serializing_if = "Option::is_none")]
921 pub reply_users_count: Option<i64>,
922
923 #[serde(skip_serializing_if = "Option::is_none")]
924 pub share_user_id: Option<String>,
925
926 #[serde(skip_serializing_if = "Option::is_none")]
927 pub source: Option<String>,
928
929 #[serde(skip_serializing_if = "Option::is_none")]
930 pub team_id: Option<String>,
931
932 #[serde(skip_serializing_if = "Option::is_none")]
933 pub thread_ts: Option<String>,
934
935 #[serde(skip_serializing_if = "Option::is_none")]
936 pub ts: Option<String>,
937}
938
939#[derive(Debug, Clone, Serialize, Deserialize)]
940pub struct TitleBlock {
941 #[serde(skip_serializing_if = "Option::is_none")]
942 pub accessory: Option<Accessory>,
943
944 #[serde(skip_serializing_if = "Option::is_none")]
945 pub alt_text: Option<String>,
946
947 #[serde(skip_serializing_if = "Option::is_none")]
948 pub app_collaborators: Option<Vec<String>>,
949
950 #[serde(skip_serializing_if = "Option::is_none")]
951 pub app_id: Option<String>,
952
953 #[serde(skip_serializing_if = "Option::is_none")]
954 pub author_name: Option<String>,
955
956 #[serde(skip_serializing_if = "Option::is_none")]
957 pub block_id: Option<String>,
958
959 #[serde(skip_serializing_if = "Option::is_none")]
960 pub bot_user_id: Option<String>,
961
962 #[serde(skip_serializing_if = "Option::is_none")]
963 pub button_label: Option<String>,
964
965 pub description: Option<DescriptionUnion>,
966
967 #[serde(skip_serializing_if = "Option::is_none")]
968 pub developer_trace_id: Option<String>,
969
970 #[serde(skip_serializing_if = "Option::is_none")]
971 pub elements: Option<Vec<Accessory>>,
972
973 #[serde(skip_serializing_if = "Option::is_none")]
974 pub fallback: Option<String>,
975
976 #[serde(skip_serializing_if = "Option::is_none")]
977 pub fields: Option<Vec<DescriptionElement>>,
978
979 #[serde(skip_serializing_if = "Option::is_none")]
980 pub function_trigger_id: Option<String>,
981
982 #[serde(skip_serializing_if = "Option::is_none")]
983 pub image_bytes: Option<i64>,
984
985 #[serde(skip_serializing_if = "Option::is_none")]
986 pub image_height: Option<i64>,
987
988 #[serde(skip_serializing_if = "Option::is_none")]
989 pub image_url: Option<String>,
990
991 #[serde(skip_serializing_if = "Option::is_none")]
992 pub image_width: Option<i64>,
993
994 #[serde(skip_serializing_if = "Option::is_none")]
995 pub is_animated: Option<bool>,
996
997 #[serde(skip_serializing_if = "Option::is_none")]
998 pub is_workflow_app: Option<bool>,
999
1000 #[serde(skip_serializing_if = "Option::is_none")]
1001 pub owning_team_id: Option<String>,
1002
1003 #[serde(skip_serializing_if = "Option::is_none")]
1004 pub provider_icon_url: Option<String>,
1005
1006 #[serde(skip_serializing_if = "Option::is_none")]
1007 pub provider_name: Option<String>,
1008
1009 #[serde(skip_serializing_if = "Option::is_none")]
1010 pub sales_home_workflow_app_type: Option<i64>,
1011
1012 #[serde(skip_serializing_if = "Option::is_none")]
1013 pub share_url: Option<String>,
1014
1015 #[serde(skip_serializing_if = "Option::is_none")]
1016 pub slack_file: Option<SlackFile>,
1017
1018 #[serde(skip_serializing_if = "Option::is_none")]
1019 pub text: Option<DescriptionElement>,
1020
1021 #[serde(skip_serializing_if = "Option::is_none")]
1022 pub thumbnail_url: Option<String>,
1023
1024 pub title: Option<DescriptionUnion>,
1025
1026 #[serde(rename = "type")]
1027 #[serde(skip_serializing_if = "Option::is_none")]
1028 pub title_block_type: Option<String>,
1029
1030 #[serde(skip_serializing_if = "Option::is_none")]
1031 pub title_url: Option<String>,
1032
1033 #[serde(skip_serializing_if = "Option::is_none")]
1034 pub trigger_subtype: Option<String>,
1035
1036 #[serde(skip_serializing_if = "Option::is_none")]
1037 pub trigger_type: Option<String>,
1038
1039 #[serde(skip_serializing_if = "Option::is_none")]
1040 pub url: Option<String>,
1041
1042 #[serde(skip_serializing_if = "Option::is_none")]
1043 pub video_url: Option<String>,
1044
1045 #[serde(skip_serializing_if = "Option::is_none")]
1046 pub workflow_id: Option<String>,
1047}
1048
1049#[derive(Debug, Clone, Serialize, Deserialize)]
1050pub struct Accessory {
1051 #[serde(skip_serializing_if = "Option::is_none")]
1052 pub accessibility_label: Option<String>,
1053
1054 #[serde(rename = "type")]
1055 #[serde(skip_serializing_if = "Option::is_none")]
1056 pub accessory_type: Option<String>,
1057
1058 #[serde(skip_serializing_if = "Option::is_none")]
1059 pub action_id: Option<String>,
1060
1061 #[serde(skip_serializing_if = "Option::is_none")]
1062 pub alt_text: Option<String>,
1063
1064 #[serde(skip_serializing_if = "Option::is_none")]
1065 pub border: Option<i64>,
1066
1067 #[serde(skip_serializing_if = "Option::is_none")]
1068 pub confirm: Option<Confirm>,
1069
1070 #[serde(skip_serializing_if = "Option::is_none")]
1071 pub default_to_current_conversation: Option<bool>,
1072
1073 #[serde(skip_serializing_if = "Option::is_none")]
1074 pub elements: Option<Vec<AccessoryElement>>,
1075
1076 #[serde(skip_serializing_if = "Option::is_none")]
1077 pub fallback: Option<String>,
1078
1079 #[serde(skip_serializing_if = "Option::is_none")]
1080 pub filter: Option<Filter>,
1081
1082 #[serde(skip_serializing_if = "Option::is_none")]
1083 pub focus_on_load: Option<bool>,
1084
1085 #[serde(skip_serializing_if = "Option::is_none")]
1086 pub image_bytes: Option<i64>,
1087
1088 #[serde(skip_serializing_if = "Option::is_none")]
1089 pub image_height: Option<i64>,
1090
1091 #[serde(skip_serializing_if = "Option::is_none")]
1092 pub image_url: Option<String>,
1093
1094 #[serde(skip_serializing_if = "Option::is_none")]
1095 pub image_width: Option<i64>,
1096
1097 #[serde(skip_serializing_if = "Option::is_none")]
1098 pub indent: Option<i64>,
1099
1100 #[serde(skip_serializing_if = "Option::is_none")]
1101 pub initial_channel: Option<String>,
1102
1103 #[serde(skip_serializing_if = "Option::is_none")]
1104 pub initial_channels: Option<Vec<String>>,
1105
1106 #[serde(skip_serializing_if = "Option::is_none")]
1107 pub initial_conversation: Option<String>,
1108
1109 #[serde(skip_serializing_if = "Option::is_none")]
1110 pub initial_conversations: Option<Vec<String>>,
1111
1112 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub initial_date: Option<String>,
1114
1115 #[serde(skip_serializing_if = "Option::is_none")]
1116 pub initial_date_time: Option<i64>,
1117
1118 #[serde(skip_serializing_if = "Option::is_none")]
1119 pub initial_option: Option<Option_>,
1120
1121 #[serde(skip_serializing_if = "Option::is_none")]
1122 pub initial_options: Option<Vec<Option_>>,
1123
1124 #[serde(skip_serializing_if = "Option::is_none")]
1125 pub initial_time: Option<String>,
1126
1127 #[serde(skip_serializing_if = "Option::is_none")]
1128 pub initial_user: Option<String>,
1129
1130 #[serde(skip_serializing_if = "Option::is_none")]
1131 pub initial_users: Option<Vec<String>>,
1132
1133 #[serde(skip_serializing_if = "Option::is_none")]
1134 pub max_selected_items: Option<i64>,
1135
1136 #[serde(skip_serializing_if = "Option::is_none")]
1137 pub min_query_length: Option<i64>,
1138
1139 #[serde(skip_serializing_if = "Option::is_none")]
1140 pub offset: Option<i64>,
1141
1142 #[serde(skip_serializing_if = "Option::is_none")]
1143 pub option_groups: Option<Vec<OptionGroup>>,
1144
1145 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub options: Option<Vec<Option_>>,
1147
1148 #[serde(skip_serializing_if = "Option::is_none")]
1149 pub placeholder: Option<DescriptionElement>,
1150
1151 #[serde(skip_serializing_if = "Option::is_none")]
1152 pub response_url_enabled: Option<bool>,
1153
1154 #[serde(skip_serializing_if = "Option::is_none")]
1155 pub slack_file: Option<SlackFile>,
1156
1157 #[serde(skip_serializing_if = "Option::is_none")]
1158 pub style: Option<String>,
1159
1160 #[serde(skip_serializing_if = "Option::is_none")]
1161 pub text: Option<DescriptionElement>,
1162
1163 #[serde(skip_serializing_if = "Option::is_none")]
1164 pub timezone: Option<String>,
1165
1166 #[serde(skip_serializing_if = "Option::is_none")]
1167 pub url: Option<String>,
1168
1169 #[serde(skip_serializing_if = "Option::is_none")]
1170 pub value: Option<String>,
1171
1172 #[serde(skip_serializing_if = "Option::is_none")]
1173 pub workflow: Option<Workflow>,
1174}
1175
1176#[derive(Debug, Clone, Serialize, Deserialize)]
1177pub struct Confirm {
1178 #[serde(skip_serializing_if = "Option::is_none")]
1179 pub confirm: Option<DescriptionElement>,
1180
1181 #[serde(skip_serializing_if = "Option::is_none")]
1182 pub deny: Option<DescriptionElement>,
1183
1184 #[serde(skip_serializing_if = "Option::is_none")]
1185 pub style: Option<String>,
1186
1187 #[serde(skip_serializing_if = "Option::is_none")]
1188 pub text: Option<DescriptionElement>,
1189
1190 #[serde(skip_serializing_if = "Option::is_none")]
1191 pub title: Option<DescriptionElement>,
1192}
1193
1194#[derive(Debug, Clone, Serialize, Deserialize)]
1195pub struct DescriptionElement {
1196 #[serde(rename = "type")]
1197 #[serde(skip_serializing_if = "Option::is_none")]
1198 pub description_type: Option<DescriptionType>,
1199
1200 #[serde(skip_serializing_if = "Option::is_none")]
1201 pub emoji: Option<bool>,
1202
1203 #[serde(skip_serializing_if = "Option::is_none")]
1204 pub text: Option<String>,
1205
1206 #[serde(skip_serializing_if = "Option::is_none")]
1207 pub verbatim: Option<bool>,
1208}
1209
1210#[derive(Debug, Clone, Serialize, Deserialize)]
1211#[serde(rename_all = "snake_case")]
1212pub enum DescriptionType {
1213 Mrkdwn,
1214
1215 #[serde(rename = "plain_text")]
1216 PlainText,
1217}
1218
1219#[derive(Debug, Clone, Serialize, Deserialize)]
1220pub struct AccessoryElement {
1221 #[serde(skip_serializing_if = "Option::is_none")]
1222 pub border: Option<i64>,
1223
1224 #[serde(rename = "type")]
1225 #[serde(skip_serializing_if = "Option::is_none")]
1226 pub element_type: Option<String>,
1227
1228 #[serde(skip_serializing_if = "Option::is_none")]
1229 pub elements: Option<Vec<PurpleElement>>,
1230
1231 #[serde(skip_serializing_if = "Option::is_none")]
1232 pub indent: Option<i64>,
1233
1234 #[serde(skip_serializing_if = "Option::is_none")]
1235 pub offset: Option<i64>,
1236
1237 #[serde(skip_serializing_if = "Option::is_none")]
1238 pub style: Option<String>,
1239}
1240
1241#[derive(Debug, Clone, Serialize, Deserialize)]
1242pub struct PurpleElement {
1243 #[serde(skip_serializing_if = "Option::is_none")]
1244 pub channel_id: Option<String>,
1245
1246 #[serde(rename = "type")]
1247 #[serde(skip_serializing_if = "Option::is_none")]
1248 pub element_type: Option<ElementType>,
1249
1250 #[serde(rename = "unsafe")]
1251 #[serde(skip_serializing_if = "Option::is_none")]
1252 pub element_unsafe: Option<bool>,
1253
1254 #[serde(skip_serializing_if = "Option::is_none")]
1255 pub fallback: Option<String>,
1256
1257 #[serde(skip_serializing_if = "Option::is_none")]
1258 pub format: Option<String>,
1259
1260 #[serde(skip_serializing_if = "Option::is_none")]
1261 pub name: Option<String>,
1262
1263 #[serde(skip_serializing_if = "Option::is_none")]
1264 pub range: Option<String>,
1265
1266 #[serde(skip_serializing_if = "Option::is_none")]
1267 pub skin_tone: Option<i64>,
1268
1269 #[serde(skip_serializing_if = "Option::is_none")]
1270 pub style: Option<Style>,
1271
1272 #[serde(skip_serializing_if = "Option::is_none")]
1273 pub team_id: Option<String>,
1274
1275 #[serde(skip_serializing_if = "Option::is_none")]
1276 pub text: Option<String>,
1277
1278 #[serde(skip_serializing_if = "Option::is_none")]
1279 pub timestamp: Option<i64>,
1280
1281 #[serde(skip_serializing_if = "Option::is_none")]
1282 pub unicode: Option<String>,
1283
1284 #[serde(skip_serializing_if = "Option::is_none")]
1285 pub url: Option<String>,
1286
1287 #[serde(skip_serializing_if = "Option::is_none")]
1288 pub user_id: Option<String>,
1289
1290 #[serde(skip_serializing_if = "Option::is_none")]
1291 pub usergroup_id: Option<String>,
1292
1293 #[serde(skip_serializing_if = "Option::is_none")]
1294 pub value: Option<String>,
1295}
1296
1297#[derive(Debug, Clone, Serialize, Deserialize)]
1298#[serde(rename_all = "snake_case")]
1299pub enum ElementType {
1300 Broadcast,
1301
1302 Channel,
1303
1304 Color,
1305
1306 Date,
1307
1308 Emoji,
1309
1310 Link,
1311
1312 Team,
1313
1314 Text,
1315
1316 User,
1317
1318 Usergroup,
1319}
1320
1321#[derive(Debug, Clone, Serialize, Deserialize)]
1322pub struct Style {
1323 #[serde(skip_serializing_if = "Option::is_none")]
1324 pub bold: Option<bool>,
1325
1326 #[serde(skip_serializing_if = "Option::is_none")]
1327 pub client_highlight: Option<bool>,
1328
1329 #[serde(skip_serializing_if = "Option::is_none")]
1330 pub code: Option<bool>,
1331
1332 #[serde(skip_serializing_if = "Option::is_none")]
1333 pub highlight: Option<bool>,
1334
1335 #[serde(skip_serializing_if = "Option::is_none")]
1336 pub italic: Option<bool>,
1337
1338 #[serde(skip_serializing_if = "Option::is_none")]
1339 pub strike: Option<bool>,
1340
1341 #[serde(skip_serializing_if = "Option::is_none")]
1342 pub unlink: Option<bool>,
1343}
1344
1345#[derive(Debug, Clone, Serialize, Deserialize)]
1346pub struct Filter {
1347 #[serde(skip_serializing_if = "Option::is_none")]
1348 pub exclude_bot_users: Option<bool>,
1349
1350 #[serde(skip_serializing_if = "Option::is_none")]
1351 pub exclude_external_shared_channels: Option<bool>,
1352
1353 #[serde(skip_serializing_if = "Option::is_none")]
1354 pub include: Option<Vec<Option<serde_json::Value>>>,
1355}
1356
1357#[derive(Debug, Clone, Serialize, Deserialize)]
1358pub struct Option_ {
1359 #[serde(skip_serializing_if = "Option::is_none")]
1360 pub description: Option<DescriptionElement>,
1361
1362 #[serde(skip_serializing_if = "Option::is_none")]
1363 pub text: Option<DescriptionElement>,
1364
1365 #[serde(skip_serializing_if = "Option::is_none")]
1366 pub url: Option<String>,
1367
1368 #[serde(skip_serializing_if = "Option::is_none")]
1369 pub value: Option<String>,
1370}
1371
1372#[derive(Debug, Clone, Serialize, Deserialize)]
1373pub struct OptionGroup {
1374 #[serde(skip_serializing_if = "Option::is_none")]
1375 pub label: Option<DescriptionElement>,
1376
1377 #[serde(skip_serializing_if = "Option::is_none")]
1378 pub options: Option<Vec<Option_>>,
1379}
1380
1381#[derive(Debug, Clone, Serialize, Deserialize)]
1382pub struct SlackFile {
1383 #[serde(skip_serializing_if = "Option::is_none")]
1384 pub id: Option<String>,
1385
1386 #[serde(skip_serializing_if = "Option::is_none")]
1387 pub url: Option<String>,
1388}
1389
1390#[derive(Debug, Clone, Serialize, Deserialize)]
1391pub struct Workflow {
1392 #[serde(skip_serializing_if = "Option::is_none")]
1393 pub trigger: Option<Trigger>,
1394}
1395
1396#[derive(Debug, Clone, Serialize, Deserialize)]
1397pub struct Trigger {
1398 #[serde(skip_serializing_if = "Option::is_none")]
1399 pub customizable_input_parameters: Option<Vec<CustomizableInputParameter>>,
1400
1401 #[serde(skip_serializing_if = "Option::is_none")]
1402 pub url: Option<String>,
1403}
1404
1405#[derive(Debug, Clone, Serialize, Deserialize)]
1406pub struct CustomizableInputParameter {
1407 #[serde(skip_serializing_if = "Option::is_none")]
1408 pub name: Option<String>,
1409
1410 #[serde(skip_serializing_if = "Option::is_none")]
1411 pub value: Option<String>,
1412}
1413
1414#[derive(Debug, Clone, Serialize, Deserialize)]
1415#[serde(untagged)]
1416pub enum DescriptionUnion {
1417 DescriptionElement(DescriptionElement),
1418
1419 String(String),
1420}
1421
1422#[derive(Debug, Clone, Serialize, Deserialize)]
1423pub struct Transcription {
1424 #[serde(skip_serializing_if = "Option::is_none")]
1425 pub locale: Option<String>,
1426
1427 #[serde(skip_serializing_if = "Option::is_none")]
1428 pub status: Option<String>,
1429}