1use serde::Serialize;
2use serde_json::Number;
3
4#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
5#[serde(rename_all = "snake_case")]
6pub enum CardMembershipKind {
7 Member,
8 Assignee,
9}
10
11#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
12pub struct CardMemberCollectionSuccess {
13 pub board_id: String,
14 pub list_id: String,
15 pub card_id: String,
16 pub members: Vec<String>,
17}
18
19#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
20pub struct CardAssigneeCollectionSuccess {
21 pub board_id: String,
22 pub list_id: String,
23 pub card_id: String,
24 pub assignees: Vec<String>,
25}
26
27#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
28pub struct CardMembershipMutationSuccess {
29 pub board_id: String,
30 pub list_id: String,
31 pub card_id: String,
32 pub user_id: String,
33 pub kind: CardMembershipKind,
34 pub action: super::MembershipAction,
35 pub members: Vec<String>,
36 pub assignees: Vec<String>,
37}
38
39#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
40pub struct CardSummary {
41 pub card_id: String,
42 pub title: Option<String>,
43 pub description: Option<String>,
44 pub swimlane_id: Option<String>,
45 pub received_at: Option<String>,
46 pub start_at: Option<String>,
47 pub due_at: Option<String>,
48 pub end_at: Option<String>,
49 pub assignees: Vec<String>,
50 pub sort: Option<Number>,
51}
52
53#[derive(Debug, Eq, PartialEq, Serialize)]
54pub struct CardCollectionSuccess {
55 pub board_id: String,
56 pub list_id: String,
57 pub cards: Vec<CardSummary>,
58}
59
60#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
61#[serde(untagged)]
62pub enum CardDetailCustomFieldValue {
63 String(String),
64 Number(Number),
65 Boolean(bool),
66 Strings(Vec<Option<String>>),
67}
68
69#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
70pub struct CardDetailCustomField {
71 pub custom_field_id: Option<String>,
72 pub value: Option<CardDetailCustomFieldValue>,
73}
74
75#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
76#[serde(rename_all = "lowercase")]
77pub enum CardDetailStickerHighlight {
78 Underline,
79 Round,
80}
81
82#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
83pub struct CardDetailSticker {
84 pub icon: Option<String>,
85 pub name: Option<String>,
86 pub highlight: Option<CardDetailStickerHighlight>,
87 pub position: Option<Number>,
88}
89
90#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
91pub struct CardDetailLocation {
92 pub location_id: String,
93 pub name: Option<String>,
94 pub address: Option<String>,
95 pub latitude: Option<Number>,
96 pub longitude: Option<Number>,
97}
98
99#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
100pub struct CardDetailDependency {
101 pub card_id: String,
102 pub dependency_type: Option<String>,
103 pub color: Option<String>,
104 pub icon: Option<String>,
105}
106
107#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
108pub struct CardDetailVote {
109 pub question: String,
110 pub positive: Vec<String>,
111 pub negative: Vec<String>,
112 pub end: Option<String>,
113 pub public: bool,
114 pub allow_non_board_members: bool,
115}
116
117#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
118pub struct CardDetailPoker {
119 pub question: Option<bool>,
120 pub one: Vec<String>,
121 pub two: Vec<String>,
122 pub three: Vec<String>,
123 pub five: Vec<String>,
124 pub eight: Vec<String>,
125 pub thirteen: Vec<String>,
126 pub twenty: Vec<String>,
127 pub forty: Vec<String>,
128 pub one_hundred: Vec<String>,
129 pub unsure: Vec<String>,
130 pub end: Option<String>,
131 pub allow_non_board_members: Option<bool>,
132 pub estimation: Option<Number>,
133}
134
135#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
136pub struct CardDetail {
137 pub card_id: String,
138 pub title: Option<String>,
139 pub watchers: Option<Vec<String>>,
140 pub archived: bool,
141 pub archived_at: Option<String>,
142 pub deleted_at: Option<String>,
143 pub deleted_by: Option<String>,
144 pub delete_batch_id: Option<String>,
145 pub parent_id: Option<String>,
146 pub list_id: Option<String>,
147 pub swimlane_id: String,
148 pub board_id: Option<String>,
149 pub cover_id: Option<String>,
150 pub color: Option<String>,
151 pub created_at: String,
152 pub modified_at: String,
153 pub custom_fields: Vec<CardDetailCustomField>,
154 pub date_last_activity: String,
155 pub description: Option<String>,
156 pub requested_by: Option<String>,
157 pub assigned_by: Option<String>,
158 pub label_ids: Vec<Option<String>>,
159 pub members: Vec<String>,
160 pub assignees: Vec<String>,
161 pub requesters: Vec<String>,
162 pub assigners: Vec<String>,
163 pub received_at: Option<String>,
164 pub start_at: Option<String>,
165 pub due_at: Option<String>,
166 pub end_at: Option<String>,
167 pub due_complete: Option<bool>,
168 pub stickers: Vec<CardDetailSticker>,
169 pub location_name: Option<String>,
170 pub location_address: Option<String>,
171 pub location_latitude: Option<Number>,
172 pub location_longitude: Option<Number>,
173 pub locations: Vec<CardDetailLocation>,
174 pub spent_time: Option<Number>,
175 pub is_overtime: Option<bool>,
176 pub user_id: String,
177 pub sort: Option<Number>,
178 pub subtask_sort: Option<Number>,
179 pub card_type: String,
180 pub linked_id: Option<String>,
181 pub card_dependencies: Vec<CardDetailDependency>,
182 pub vote: Option<CardDetailVote>,
183 pub poker: Option<CardDetailPoker>,
184 pub target_id_gantt: Vec<String>,
185 pub link_type_gantt: Vec<Number>,
186 pub link_id_gantt: Vec<String>,
187 pub card_number: Option<Number>,
188 pub show_activities: bool,
189 pub show_list_on_minicard: Option<bool>,
190 pub show_checklist_at_minicard: Option<bool>,
191 pub hide_finished_checklist_if_items_are_hidden: Option<bool>,
192}
193
194#[derive(Debug, Eq, PartialEq, Serialize)]
195pub struct CardCreateSuccess {
196 pub board_id: String,
197 pub list_id: String,
198 pub card_id: String,
199}
200
201#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
202#[serde(rename_all = "snake_case")]
203pub enum CardSubmittedField {
204 Title,
205 Sort,
206 ParentId,
207 Description,
208 Color,
209 LabelIds,
210 RequestedBy,
211 AssignedBy,
212 ReceivedAt,
213 StartAt,
214 DueAt,
215 EndAt,
216 SpentTime,
217 IsOverTime,
218 Members,
219 Assignees,
220 DueComplete,
221 SwimlaneId,
222 ListId,
223 NewBoardId,
224 NewSwimlaneId,
225 NewListId,
226 Archive,
227 Vote,
228 Poker,
229 CustomFields,
230 Stickers,
231 Locations,
232}
233
234#[derive(Debug, Eq, PartialEq, Serialize)]
235pub struct CardUpdateSuccess {
236 pub board_id: String,
237 pub list_id: String,
238 pub card_id: String,
239 pub submitted_fields: Vec<CardSubmittedField>,
240}
241
242#[derive(Debug, Eq, PartialEq, Serialize)]
243pub struct CardArchiveSuccess {
244 pub board_id: String,
245 pub list_id: String,
246 pub card_id: String,
247 pub archived: bool,
248 pub archived_at: String,
249}
250
251#[derive(Debug, Eq, PartialEq, Serialize)]
252pub struct CardRestoreSuccess {
253 pub board_id: String,
254 pub list_id: String,
255 pub card_id: String,
256 pub archived: bool,
257}
258
259#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
260#[serde(rename_all = "snake_case")]
261pub enum CardDeleteMode {
262 Hard,
263}
264
265#[derive(Debug, Eq, PartialEq, Serialize)]
266pub struct CardDeleteSuccess {
267 pub board_id: String,
268 pub list_id: String,
269 pub card_id: String,
270 pub deletion_requested: bool,
271 pub delete_mode: CardDeleteMode,
272}
273
274#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
275pub struct CardCustomFieldSetSuccess {
276 pub board_id: String,
277 pub list_id: String,
278 pub card_id: String,
279 pub custom_field_id: String,
280 pub custom_fields: Vec<CardDetailCustomField>,
281}
282#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
283pub struct CardCustomFieldQuerySuccess {
284 pub board_id: String,
285 pub custom_field_id: String,
286 pub value: String,
287 pub cards: Vec<CardDetail>,
288}
289
290#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
291pub struct CardLabelCollection {
292 pub board_id: String,
293 pub list_id: String,
294 pub card_id: String,
295 pub label_ids: Vec<Option<String>>,
296}
297
298#[derive(Debug, Eq, PartialEq, Serialize)]
299pub struct CardCopySuccess {
300 pub source_board_id: String,
301 pub source_list_id: String,
302 pub source_card_id: String,
303 pub target_board_id: String,
304 pub target_list_id: String,
305 pub target_swimlane_id: String,
306 pub card_id: String,
307}
308#[derive(Debug, Eq, PartialEq, Serialize)]
309pub struct CardCountSuccess {
310 pub board_id: String,
311 pub list_id: Option<String>,
312 pub count: u64,
313}
314#[derive(Debug, Eq, PartialEq, Serialize)]
315pub struct SwimlaneCardCollectionSuccess {
316 pub board_id: String,
317 pub swimlane_id: String,
318 pub cards: Vec<SwimlaneCardSummary>,
319}
320
321#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
322pub struct SwimlaneCardSummary {
323 pub card_id: String,
324 pub title: Option<String>,
325 pub description: Option<String>,
326 pub list_id: Option<String>,
327 pub received_at: Option<String>,
328 pub start_at: Option<String>,
329 pub due_at: Option<String>,
330 pub end_at: Option<String>,
331 pub assignees: Option<Vec<Option<String>>>,
332 pub sort: Option<Number>,
333}