Skip to main content

wekan_cli/client/boards/
card_settings.rs

1use reqwest::header::ACCEPT;
2use secrecy::{ExposeSecret, SecretString};
3use serde::{Deserialize, Serialize};
4use serde_json::Number;
5
6use super::{ClientError, WekanClient};
7use crate::client::transport::decode_success;
8
9/// The complete v12.57 card-settings projection. Omission is distinct from null.
10#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
11#[serde(
12    deny_unknown_fields,
13    rename_all(deserialize = "camelCase", serialize = "snake_case")
14)]
15pub struct BoardCardSettings {
16    #[serde(default, deserialize_with = "optional")]
17    pub allows_swimlane_dragging: Option<bool>,
18    #[serde(default, deserialize_with = "optional")]
19    pub allows_list_dragging: Option<bool>,
20    #[serde(default, deserialize_with = "optional")]
21    pub allows_card_dragging: Option<bool>,
22    #[serde(default, deserialize_with = "optional")]
23    pub allows_checklist_dragging: Option<bool>,
24    #[serde(default, deserialize_with = "optional")]
25    pub allows_checklist_item_dragging: Option<bool>,
26    #[serde(default, deserialize_with = "optional")]
27    pub allows_subtask_dragging: Option<bool>,
28    #[serde(default, deserialize_with = "optional")]
29    pub allows_minicard_collapse: Option<bool>,
30    #[serde(default, deserialize_with = "optional")]
31    pub labels_above_title_on_minicard: Option<bool>,
32    #[serde(default, deserialize_with = "optional")]
33    pub allows_checklist_due_date: Option<bool>,
34    #[serde(default, deserialize_with = "optional")]
35    pub allows_checklist_title: Option<bool>,
36    #[serde(default, deserialize_with = "optional")]
37    pub ask_for_move_reason: Option<bool>,
38    #[serde(default, deserialize_with = "optional")]
39    pub allows_comments_on_minicard: Option<bool>,
40    #[serde(default, deserialize_with = "optional")]
41    pub allows_spent_time: Option<bool>,
42    #[serde(default, deserialize_with = "optional")]
43    pub allows_spent_time_on_minicard: Option<bool>,
44    #[serde(default, deserialize_with = "optional")]
45    pub allows_swimlane_name_on_minicard: Option<bool>,
46    #[serde(default, deserialize_with = "optional")]
47    pub show_label_text: Option<bool>,
48    #[serde(default, deserialize_with = "optional")]
49    pub allows_stickers: Option<bool>,
50    #[serde(default, deserialize_with = "optional")]
51    pub allows_stickers_on_minicard: Option<bool>,
52    #[serde(default, deserialize_with = "optional")]
53    pub allows_location: Option<bool>,
54    #[serde(default, deserialize_with = "optional")]
55    pub allows_dependencies: Option<bool>,
56    #[serde(default, deserialize_with = "optional")]
57    pub allows_dependencies_on_minicard: Option<bool>,
58    #[serde(default, deserialize_with = "optional")]
59    pub allows_flowtime: Option<bool>,
60    #[serde(default, deserialize_with = "optional")]
61    pub allows_pomodoro: Option<bool>,
62    #[serde(default, deserialize_with = "optional")]
63    pub allows_vote: Option<bool>,
64    #[serde(default, deserialize_with = "optional")]
65    pub allows_vote_on_minicard: Option<bool>,
66    #[serde(default, deserialize_with = "optional")]
67    pub allows_poker: Option<bool>,
68    #[serde(default, deserialize_with = "optional")]
69    pub allows_poker_on_minicard: Option<bool>,
70    #[serde(default, deserialize_with = "optional")]
71    pub allows_text_notes: Option<bool>,
72    #[serde(default, deserialize_with = "optional")]
73    pub allows_comment_count_on_minicard: Option<bool>,
74    #[serde(default, deserialize_with = "optional")]
75    pub allows_issue_type_on_minicard: Option<bool>,
76    #[serde(default, deserialize_with = "optional")]
77    pub allows_card_color_on_card: Option<bool>,
78    #[serde(default, deserialize_with = "optional")]
79    pub allows_card_color_on_minicard: Option<bool>,
80    #[serde(default, deserialize_with = "optional")]
81    pub allows_parent_card_on_card: Option<bool>,
82    #[serde(default, deserialize_with = "optional")]
83    pub allows_parent_card_on_minicard: Option<bool>,
84    #[serde(default, deserialize_with = "optional")]
85    pub allows_linked_card_on_card: Option<bool>,
86    #[serde(default, deserialize_with = "optional")]
87    pub allows_linked_card_on_minicard: Option<bool>,
88    #[serde(default, deserialize_with = "optional")]
89    pub allows_card_buttons_on_card: Option<bool>,
90    #[serde(default, deserialize_with = "optional")]
91    pub allows_description_badge_on_minicard: Option<bool>,
92    #[serde(default, deserialize_with = "optional")]
93    pub allows_unread_comments_on_minicard: Option<bool>,
94    #[serde(default, deserialize_with = "optional")]
95    pub allows_card_collapse: Option<bool>,
96    #[serde(default, deserialize_with = "optional")]
97    pub allows_checklist_title_on_minicard: Option<bool>,
98    #[serde(default, deserialize_with = "optional")]
99    pub allows_label_text_on_card: Option<bool>,
100    #[serde(default, deserialize_with = "optional")]
101    pub allows_card_counter_list: Option<bool>,
102    #[serde(default, deserialize_with = "optional")]
103    pub card_aging: Option<bool>,
104    #[serde(default, deserialize_with = "optional")]
105    pub allows_board_member_list: Option<bool>,
106    #[serde(default, deserialize_with = "optional")]
107    pub allows_show_lists: Option<bool>,
108    #[serde(default, deserialize_with = "optional")]
109    pub allows_attachments: Option<bool>,
110    #[serde(default, deserialize_with = "optional")]
111    pub allows_checklists: Option<bool>,
112    #[serde(default, deserialize_with = "optional")]
113    pub allows_comments: Option<bool>,
114    #[serde(default, deserialize_with = "optional")]
115    pub allows_description_title: Option<bool>,
116    #[serde(default, deserialize_with = "optional")]
117    pub allows_description_text: Option<bool>,
118    #[serde(default, deserialize_with = "optional")]
119    pub allows_activities: Option<bool>,
120    #[serde(default, deserialize_with = "optional")]
121    pub allows_labels: Option<bool>,
122    #[serde(default, deserialize_with = "optional")]
123    pub allows_creator: Option<bool>,
124    #[serde(default, deserialize_with = "optional")]
125    pub allows_assignee: Option<bool>,
126    #[serde(default, deserialize_with = "optional")]
127    pub allows_members: Option<bool>,
128    #[serde(default, deserialize_with = "optional")]
129    pub allows_requested_by: Option<bool>,
130    #[serde(default, deserialize_with = "optional")]
131    pub allows_card_sorting_by_number: Option<bool>,
132    #[serde(default, deserialize_with = "optional")]
133    pub allows_card_number: Option<bool>,
134    #[serde(default, deserialize_with = "optional")]
135    pub allows_assigned_by: Option<bool>,
136    #[serde(default, deserialize_with = "optional")]
137    pub allows_received_date: Option<bool>,
138    #[serde(default, deserialize_with = "optional")]
139    pub allows_start_date: Option<bool>,
140    #[serde(default, deserialize_with = "optional")]
141    pub allows_end_date: Option<bool>,
142    #[serde(default, deserialize_with = "optional")]
143    pub allows_due_date: Option<bool>,
144    #[serde(default, deserialize_with = "optional")]
145    pub allows_subtasks: Option<bool>,
146    #[serde(default, deserialize_with = "optional")]
147    pub allows_creator_on_minicard: Option<bool>,
148    #[serde(default, deserialize_with = "optional")]
149    pub allows_attachments_on_minicard: Option<bool>,
150    #[serde(default, deserialize_with = "optional")]
151    pub allows_checklists_on_minicard: Option<bool>,
152    #[serde(default, deserialize_with = "optional")]
153    pub allows_checklist_at_minicard: Option<bool>,
154    #[serde(default, deserialize_with = "optional")]
155    pub allows_cover_attachment_on_minicard: Option<bool>,
156    #[serde(default, deserialize_with = "optional")]
157    pub allows_badge_attachment_on_minicard: Option<bool>,
158    #[serde(default, deserialize_with = "optional")]
159    pub allows_card_sorting_by_number_on_minicard: Option<bool>,
160    #[serde(default, deserialize_with = "optional")]
161    pub allows_card_number_on_minicard: Option<bool>,
162    #[serde(default, deserialize_with = "optional")]
163    pub allows_description_title_on_minicard: Option<bool>,
164    #[serde(default, deserialize_with = "optional")]
165    pub allows_description_text_on_minicard: Option<bool>,
166    #[serde(default, deserialize_with = "optional")]
167    pub allows_labels_on_minicard: Option<bool>,
168    #[serde(default, deserialize_with = "optional")]
169    pub allows_assignee_on_minicard: Option<bool>,
170    #[serde(default, deserialize_with = "optional")]
171    pub allows_members_on_minicard: Option<bool>,
172    #[serde(default, deserialize_with = "optional")]
173    pub allows_requested_by_on_minicard: Option<bool>,
174    #[serde(default, deserialize_with = "optional")]
175    pub allows_assigned_by_on_minicard: Option<bool>,
176    #[serde(default, deserialize_with = "optional")]
177    pub allows_received_date_on_minicard: Option<bool>,
178    #[serde(default, deserialize_with = "optional")]
179    pub allows_start_date_on_minicard: Option<bool>,
180    #[serde(default, deserialize_with = "optional")]
181    pub allows_end_date_on_minicard: Option<bool>,
182    #[serde(default, deserialize_with = "optional")]
183    pub allows_due_date_on_minicard: Option<bool>,
184    #[serde(default, deserialize_with = "optional")]
185    pub allows_subtasks_on_minicard: Option<bool>,
186    #[serde(default, deserialize_with = "optional")]
187    pub allows_show_lists_on_minicard: Option<bool>,
188    #[serde(default, deserialize_with = "optional")]
189    pub card_aging_days1: Option<Number>,
190    #[serde(default, deserialize_with = "optional")]
191    pub card_aging_days2: Option<Number>,
192    #[serde(default, deserialize_with = "optional")]
193    pub card_aging_days3: Option<Number>,
194    #[serde(default, deserialize_with = "optional")]
195    pub allows_card_buttons_on_minicard: Option<bool>,
196    #[serde(default, deserialize_with = "optional")]
197    pub allows_description_badge_on_card: Option<bool>,
198    #[serde(default, deserialize_with = "optional")]
199    pub allows_unread_comments_on_card: Option<bool>,
200    #[serde(default, deserialize_with = "optional")]
201    pub allows_due_from_title_on_card: Option<bool>,
202    #[serde(default, deserialize_with = "optional")]
203    pub allows_due_from_title_on_minicard: Option<bool>,
204    #[serde(default, deserialize_with = "optional")]
205    pub allows_similar_cards_on_card: Option<bool>,
206    #[serde(default, deserialize_with = "optional")]
207    pub allows_similar_cards_on_minicard: Option<bool>,
208    #[serde(default, deserialize_with = "optional")]
209    pub allows_at_risk_on_card: Option<bool>,
210    #[serde(default, deserialize_with = "optional")]
211    pub allows_at_risk_on_minicard: Option<bool>,
212    #[serde(default, deserialize_with = "optional")]
213    pub allows_suggested_members_on_card: Option<bool>,
214    #[serde(default, deserialize_with = "optional")]
215    pub allows_forecast_on_card: Option<bool>,
216    #[serde(default, deserialize_with = "optional")]
217    pub allows_forecast_on_minicard: Option<bool>,
218    #[serde(default, deserialize_with = "optional")]
219    pub allows_checklist_from_description_on_card: Option<bool>,
220    #[serde(default, deserialize_with = "optional")]
221    pub allows_action_items_on_card: Option<bool>,
222    #[serde(default, deserialize_with = "optional")]
223    pub allows_whiteboard_on_card: Option<bool>,
224    #[serde(default, deserialize_with = "optional")]
225    pub labels_above_title_on_card: Option<bool>,
226    #[serde(default, deserialize_with = "optional")]
227    pub allows_checklist_due_date_on_minicard: Option<bool>,
228    #[serde(default, deserialize_with = "optional")]
229    pub allows_location_on_minicard: Option<bool>,
230    #[serde(default, deserialize_with = "optional")]
231    pub allows_swimlane_name_on_card: Option<bool>,
232    #[serde(default, deserialize_with = "optional")]
233    pub allows_flowtime_on_minicard: Option<bool>,
234    #[serde(default, deserialize_with = "optional")]
235    pub allows_pomodoro_on_minicard: Option<bool>,
236    #[serde(default, deserialize_with = "optional")]
237    pub allows_attachment_list_on_minicard: Option<bool>,
238    #[serde(default, deserialize_with = "optional")]
239    pub allows_text_notes_on_minicard: Option<bool>,
240    #[serde(default, deserialize_with = "optional")]
241    pub allows_comment_count_on_card: Option<bool>,
242    #[serde(default, deserialize_with = "optional")]
243    pub allows_activities_on_minicard: Option<bool>,
244}
245
246fn optional<'de, D: serde::Deserializer<'de>, T: Deserialize<'de>>(
247    d: D,
248) -> Result<Option<T>, D::Error> {
249    T::deserialize(d).map(Some)
250}
251
252/// Partial settings update; omitted fields are never serialized.
253#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)]
254#[serde(rename_all = "camelCase")]
255pub struct UpdateBoardCardSettingsRequest {
256    #[serde(skip_serializing_if = "Option::is_none")]
257    pub allows_swimlane_dragging: Option<bool>,
258    #[serde(skip_serializing_if = "Option::is_none")]
259    pub allows_list_dragging: Option<bool>,
260    #[serde(skip_serializing_if = "Option::is_none")]
261    pub allows_card_dragging: Option<bool>,
262    #[serde(skip_serializing_if = "Option::is_none")]
263    pub allows_checklist_dragging: Option<bool>,
264    #[serde(skip_serializing_if = "Option::is_none")]
265    pub allows_checklist_item_dragging: Option<bool>,
266    #[serde(skip_serializing_if = "Option::is_none")]
267    pub allows_subtask_dragging: Option<bool>,
268    #[serde(skip_serializing_if = "Option::is_none")]
269    pub allows_minicard_collapse: Option<bool>,
270    #[serde(skip_serializing_if = "Option::is_none")]
271    pub labels_above_title_on_minicard: Option<bool>,
272    #[serde(skip_serializing_if = "Option::is_none")]
273    pub allows_checklist_due_date: Option<bool>,
274    #[serde(skip_serializing_if = "Option::is_none")]
275    pub allows_checklist_title: Option<bool>,
276    #[serde(skip_serializing_if = "Option::is_none")]
277    pub ask_for_move_reason: Option<bool>,
278    #[serde(skip_serializing_if = "Option::is_none")]
279    pub allows_comments_on_minicard: Option<bool>,
280    #[serde(skip_serializing_if = "Option::is_none")]
281    pub allows_spent_time: Option<bool>,
282    #[serde(skip_serializing_if = "Option::is_none")]
283    pub allows_spent_time_on_minicard: Option<bool>,
284    #[serde(skip_serializing_if = "Option::is_none")]
285    pub allows_swimlane_name_on_minicard: Option<bool>,
286    #[serde(skip_serializing_if = "Option::is_none")]
287    pub show_label_text: Option<bool>,
288    #[serde(skip_serializing_if = "Option::is_none")]
289    pub allows_stickers: Option<bool>,
290    #[serde(skip_serializing_if = "Option::is_none")]
291    pub allows_stickers_on_minicard: Option<bool>,
292    #[serde(skip_serializing_if = "Option::is_none")]
293    pub allows_location: Option<bool>,
294    #[serde(skip_serializing_if = "Option::is_none")]
295    pub allows_dependencies: Option<bool>,
296    #[serde(skip_serializing_if = "Option::is_none")]
297    pub allows_dependencies_on_minicard: Option<bool>,
298    #[serde(skip_serializing_if = "Option::is_none")]
299    pub allows_flowtime: Option<bool>,
300    #[serde(skip_serializing_if = "Option::is_none")]
301    pub allows_pomodoro: Option<bool>,
302    #[serde(skip_serializing_if = "Option::is_none")]
303    pub allows_vote: Option<bool>,
304    #[serde(skip_serializing_if = "Option::is_none")]
305    pub allows_vote_on_minicard: Option<bool>,
306    #[serde(skip_serializing_if = "Option::is_none")]
307    pub allows_poker: Option<bool>,
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub allows_poker_on_minicard: Option<bool>,
310    #[serde(skip_serializing_if = "Option::is_none")]
311    pub allows_text_notes: Option<bool>,
312    #[serde(skip_serializing_if = "Option::is_none")]
313    pub allows_comment_count_on_minicard: Option<bool>,
314    #[serde(skip_serializing_if = "Option::is_none")]
315    pub allows_issue_type_on_minicard: Option<bool>,
316    #[serde(skip_serializing_if = "Option::is_none")]
317    pub allows_card_color_on_card: Option<bool>,
318    #[serde(skip_serializing_if = "Option::is_none")]
319    pub allows_card_color_on_minicard: Option<bool>,
320    #[serde(skip_serializing_if = "Option::is_none")]
321    pub allows_parent_card_on_card: Option<bool>,
322    #[serde(skip_serializing_if = "Option::is_none")]
323    pub allows_parent_card_on_minicard: Option<bool>,
324    #[serde(skip_serializing_if = "Option::is_none")]
325    pub allows_linked_card_on_card: Option<bool>,
326    #[serde(skip_serializing_if = "Option::is_none")]
327    pub allows_linked_card_on_minicard: Option<bool>,
328    #[serde(skip_serializing_if = "Option::is_none")]
329    pub allows_card_buttons_on_card: Option<bool>,
330    #[serde(skip_serializing_if = "Option::is_none")]
331    pub allows_description_badge_on_minicard: Option<bool>,
332    #[serde(skip_serializing_if = "Option::is_none")]
333    pub allows_unread_comments_on_minicard: Option<bool>,
334    #[serde(skip_serializing_if = "Option::is_none")]
335    pub allows_card_collapse: Option<bool>,
336    #[serde(skip_serializing_if = "Option::is_none")]
337    pub allows_checklist_title_on_minicard: Option<bool>,
338    #[serde(skip_serializing_if = "Option::is_none")]
339    pub allows_label_text_on_card: Option<bool>,
340    #[serde(skip_serializing_if = "Option::is_none")]
341    pub allows_card_counter_list: Option<bool>,
342    #[serde(skip_serializing_if = "Option::is_none")]
343    pub card_aging: Option<bool>,
344    #[serde(skip_serializing_if = "Option::is_none")]
345    pub allows_board_member_list: Option<bool>,
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub allows_show_lists: Option<bool>,
348    #[serde(skip_serializing_if = "Option::is_none")]
349    pub allows_attachments: Option<bool>,
350    #[serde(skip_serializing_if = "Option::is_none")]
351    pub allows_checklists: Option<bool>,
352    #[serde(skip_serializing_if = "Option::is_none")]
353    pub allows_comments: Option<bool>,
354    #[serde(skip_serializing_if = "Option::is_none")]
355    pub allows_description_title: Option<bool>,
356    #[serde(skip_serializing_if = "Option::is_none")]
357    pub allows_description_text: Option<bool>,
358    #[serde(skip_serializing_if = "Option::is_none")]
359    pub allows_activities: Option<bool>,
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub allows_labels: Option<bool>,
362    #[serde(skip_serializing_if = "Option::is_none")]
363    pub allows_creator: Option<bool>,
364    #[serde(skip_serializing_if = "Option::is_none")]
365    pub allows_assignee: Option<bool>,
366    #[serde(skip_serializing_if = "Option::is_none")]
367    pub allows_members: Option<bool>,
368    #[serde(skip_serializing_if = "Option::is_none")]
369    pub allows_requested_by: Option<bool>,
370    #[serde(skip_serializing_if = "Option::is_none")]
371    pub allows_card_sorting_by_number: Option<bool>,
372    #[serde(skip_serializing_if = "Option::is_none")]
373    pub allows_card_number: Option<bool>,
374    #[serde(skip_serializing_if = "Option::is_none")]
375    pub allows_assigned_by: Option<bool>,
376    #[serde(skip_serializing_if = "Option::is_none")]
377    pub allows_received_date: Option<bool>,
378    #[serde(skip_serializing_if = "Option::is_none")]
379    pub allows_start_date: Option<bool>,
380    #[serde(skip_serializing_if = "Option::is_none")]
381    pub allows_end_date: Option<bool>,
382    #[serde(skip_serializing_if = "Option::is_none")]
383    pub allows_due_date: Option<bool>,
384    #[serde(skip_serializing_if = "Option::is_none")]
385    pub allows_subtasks: Option<bool>,
386    #[serde(skip_serializing_if = "Option::is_none")]
387    pub allows_creator_on_minicard: Option<bool>,
388    #[serde(skip_serializing_if = "Option::is_none")]
389    pub allows_attachments_on_minicard: Option<bool>,
390    #[serde(skip_serializing_if = "Option::is_none")]
391    pub allows_checklists_on_minicard: Option<bool>,
392    #[serde(skip_serializing_if = "Option::is_none")]
393    pub allows_checklist_at_minicard: Option<bool>,
394    #[serde(skip_serializing_if = "Option::is_none")]
395    pub allows_cover_attachment_on_minicard: Option<bool>,
396    #[serde(skip_serializing_if = "Option::is_none")]
397    pub allows_badge_attachment_on_minicard: Option<bool>,
398    #[serde(skip_serializing_if = "Option::is_none")]
399    pub allows_card_sorting_by_number_on_minicard: Option<bool>,
400    #[serde(skip_serializing_if = "Option::is_none")]
401    pub allows_card_number_on_minicard: Option<bool>,
402    #[serde(skip_serializing_if = "Option::is_none")]
403    pub allows_description_title_on_minicard: Option<bool>,
404    #[serde(skip_serializing_if = "Option::is_none")]
405    pub allows_description_text_on_minicard: Option<bool>,
406    #[serde(skip_serializing_if = "Option::is_none")]
407    pub allows_labels_on_minicard: Option<bool>,
408    #[serde(skip_serializing_if = "Option::is_none")]
409    pub allows_assignee_on_minicard: Option<bool>,
410    #[serde(skip_serializing_if = "Option::is_none")]
411    pub allows_members_on_minicard: Option<bool>,
412    #[serde(skip_serializing_if = "Option::is_none")]
413    pub allows_requested_by_on_minicard: Option<bool>,
414    #[serde(skip_serializing_if = "Option::is_none")]
415    pub allows_assigned_by_on_minicard: Option<bool>,
416    #[serde(skip_serializing_if = "Option::is_none")]
417    pub allows_received_date_on_minicard: Option<bool>,
418    #[serde(skip_serializing_if = "Option::is_none")]
419    pub allows_start_date_on_minicard: Option<bool>,
420    #[serde(skip_serializing_if = "Option::is_none")]
421    pub allows_end_date_on_minicard: Option<bool>,
422    #[serde(skip_serializing_if = "Option::is_none")]
423    pub allows_due_date_on_minicard: Option<bool>,
424    #[serde(skip_serializing_if = "Option::is_none")]
425    pub allows_subtasks_on_minicard: Option<bool>,
426    #[serde(skip_serializing_if = "Option::is_none")]
427    pub allows_show_lists_on_minicard: Option<bool>,
428    #[serde(skip_serializing_if = "Option::is_none")]
429    pub card_aging_days1: Option<u64>,
430    #[serde(skip_serializing_if = "Option::is_none")]
431    pub card_aging_days2: Option<u64>,
432    #[serde(skip_serializing_if = "Option::is_none")]
433    pub card_aging_days3: Option<u64>,
434    #[serde(skip_serializing_if = "Option::is_none")]
435    pub allows_card_buttons_on_minicard: Option<bool>,
436    #[serde(skip_serializing_if = "Option::is_none")]
437    pub allows_description_badge_on_card: Option<bool>,
438    #[serde(skip_serializing_if = "Option::is_none")]
439    pub allows_unread_comments_on_card: Option<bool>,
440    #[serde(skip_serializing_if = "Option::is_none")]
441    pub allows_due_from_title_on_card: Option<bool>,
442    #[serde(skip_serializing_if = "Option::is_none")]
443    pub allows_due_from_title_on_minicard: Option<bool>,
444    #[serde(skip_serializing_if = "Option::is_none")]
445    pub allows_similar_cards_on_card: Option<bool>,
446    #[serde(skip_serializing_if = "Option::is_none")]
447    pub allows_similar_cards_on_minicard: Option<bool>,
448    #[serde(skip_serializing_if = "Option::is_none")]
449    pub allows_at_risk_on_card: Option<bool>,
450    #[serde(skip_serializing_if = "Option::is_none")]
451    pub allows_at_risk_on_minicard: Option<bool>,
452    #[serde(skip_serializing_if = "Option::is_none")]
453    pub allows_suggested_members_on_card: Option<bool>,
454    #[serde(skip_serializing_if = "Option::is_none")]
455    pub allows_forecast_on_card: Option<bool>,
456    #[serde(skip_serializing_if = "Option::is_none")]
457    pub allows_forecast_on_minicard: Option<bool>,
458    #[serde(skip_serializing_if = "Option::is_none")]
459    pub allows_checklist_from_description_on_card: Option<bool>,
460    #[serde(skip_serializing_if = "Option::is_none")]
461    pub allows_action_items_on_card: Option<bool>,
462    #[serde(skip_serializing_if = "Option::is_none")]
463    pub allows_whiteboard_on_card: Option<bool>,
464    #[serde(skip_serializing_if = "Option::is_none")]
465    pub labels_above_title_on_card: Option<bool>,
466    #[serde(skip_serializing_if = "Option::is_none")]
467    pub allows_checklist_due_date_on_minicard: Option<bool>,
468    #[serde(skip_serializing_if = "Option::is_none")]
469    pub allows_location_on_minicard: Option<bool>,
470    #[serde(skip_serializing_if = "Option::is_none")]
471    pub allows_swimlane_name_on_card: Option<bool>,
472    #[serde(skip_serializing_if = "Option::is_none")]
473    pub allows_flowtime_on_minicard: Option<bool>,
474    #[serde(skip_serializing_if = "Option::is_none")]
475    pub allows_pomodoro_on_minicard: Option<bool>,
476    #[serde(skip_serializing_if = "Option::is_none")]
477    pub allows_attachment_list_on_minicard: Option<bool>,
478    #[serde(skip_serializing_if = "Option::is_none")]
479    pub allows_text_notes_on_minicard: Option<bool>,
480    #[serde(skip_serializing_if = "Option::is_none")]
481    pub allows_comment_count_on_card: Option<bool>,
482    #[serde(skip_serializing_if = "Option::is_none")]
483    pub allows_activities_on_minicard: Option<bool>,
484}
485
486impl WekanClient {
487    pub async fn board_card_settings(
488        &self,
489        board: &str,
490        token: &SecretString,
491    ) -> Result<BoardCardSettings, ClientError> {
492        super::members::validate_id(board)?;
493        let body = self
494            .execute_success_request(
495                self.http
496                    .get(self.board_endpoint(board, Some("cardSettings"))?)
497                    .header(ACCEPT, "application/json")
498                    .bearer_auth(token.expose_secret()),
499            )
500            .await?;
501        decode_success(&body, "board card settings get", true)
502    }
503
504    pub async fn update_board_card_settings(
505        &self,
506        board: &str,
507        request: &UpdateBoardCardSettingsRequest,
508        token: &SecretString,
509    ) -> Result<BoardCardSettings, ClientError> {
510        super::members::validate_id(board)?;
511        let body = self
512            .execute_success_request(
513                self.http
514                    .put(self.board_endpoint(board, Some("cardSettings"))?)
515                    .header(ACCEPT, "application/json")
516                    .bearer_auth(token.expose_secret())
517                    .json(request),
518            )
519            .await?;
520        decode_success(&body, "board card settings update", true)
521    }
522}