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 archived: bool,
140 pub archived_at: Option<String>,
141 pub deleted_at: Option<String>,
142 pub deleted_by: Option<String>,
143 pub delete_batch_id: Option<String>,
144 pub parent_id: Option<String>,
145 pub list_id: Option<String>,
146 pub swimlane_id: String,
147 pub board_id: Option<String>,
148 pub cover_id: Option<String>,
149 pub color: Option<String>,
150 pub created_at: String,
151 pub modified_at: String,
152 pub custom_fields: Vec<CardDetailCustomField>,
153 pub date_last_activity: String,
154 pub description: Option<String>,
155 pub requested_by: Option<String>,
156 pub assigned_by: Option<String>,
157 pub label_ids: Vec<Option<String>>,
158 pub members: Vec<String>,
159 pub assignees: Vec<String>,
160 pub requesters: Vec<String>,
161 pub assigners: Vec<String>,
162 pub received_at: Option<String>,
163 pub start_at: Option<String>,
164 pub due_at: Option<String>,
165 pub end_at: Option<String>,
166 pub due_complete: Option<bool>,
167 pub stickers: Vec<CardDetailSticker>,
168 pub location_name: Option<String>,
169 pub location_address: Option<String>,
170 pub location_latitude: Option<Number>,
171 pub location_longitude: Option<Number>,
172 pub locations: Vec<CardDetailLocation>,
173 pub spent_time: Option<Number>,
174 pub is_overtime: Option<bool>,
175 pub user_id: String,
176 pub sort: Option<Number>,
177 pub subtask_sort: Option<Number>,
178 pub card_type: String,
179 pub linked_id: Option<String>,
180 pub card_dependencies: Vec<CardDetailDependency>,
181 pub vote: Option<CardDetailVote>,
182 pub poker: Option<CardDetailPoker>,
183 pub target_id_gantt: Vec<String>,
184 pub link_type_gantt: Vec<Number>,
185 pub link_id_gantt: Vec<String>,
186 pub card_number: Option<Number>,
187 pub show_activities: bool,
188 pub show_list_on_minicard: Option<bool>,
189 pub show_checklist_at_minicard: Option<bool>,
190 pub hide_finished_checklist_if_items_are_hidden: Option<bool>,
191}
192
193#[derive(Debug, Eq, PartialEq, Serialize)]
194pub struct CardCreateSuccess {
195 pub board_id: String,
196 pub list_id: String,
197 pub card_id: String,
198}
199
200#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
201#[serde(rename_all = "snake_case")]
202pub enum CardSubmittedField {
203 Title,
204 Sort,
205 ParentId,
206 Description,
207 Color,
208 LabelIds,
209 RequestedBy,
210 AssignedBy,
211 ReceivedAt,
212 StartAt,
213 DueAt,
214 EndAt,
215 SpentTime,
216 IsOverTime,
217 Members,
218 Assignees,
219 DueComplete,
220 SwimlaneId,
221 ListId,
222 NewBoardId,
223 NewSwimlaneId,
224 NewListId,
225 Archive,
226 Vote,
227 Poker,
228 CustomFields,
229 Stickers,
230 Locations,
231}
232
233#[derive(Debug, Eq, PartialEq, Serialize)]
234pub struct CardUpdateSuccess {
235 pub board_id: String,
236 pub list_id: String,
237 pub card_id: String,
238 pub submitted_fields: Vec<CardSubmittedField>,
239}
240
241#[derive(Debug, Eq, PartialEq, Serialize)]
242pub struct CardArchiveSuccess {
243 pub board_id: String,
244 pub list_id: String,
245 pub card_id: String,
246 pub archived: bool,
247 pub archived_at: String,
248}
249
250#[derive(Debug, Eq, PartialEq, Serialize)]
251pub struct CardRestoreSuccess {
252 pub board_id: String,
253 pub list_id: String,
254 pub card_id: String,
255 pub archived: bool,
256}
257
258#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
259#[serde(rename_all = "snake_case")]
260pub enum CardDeleteMode {
261 Hard,
262}
263
264#[derive(Debug, Eq, PartialEq, Serialize)]
265pub struct CardDeleteSuccess {
266 pub board_id: String,
267 pub list_id: String,
268 pub card_id: String,
269 pub deleted: bool,
270 pub delete_mode: CardDeleteMode,
271}
272
273#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
274pub struct CardCustomFieldSetSuccess {
275 pub board_id: String,
276 pub list_id: String,
277 pub card_id: String,
278 pub custom_field_id: String,
279 pub custom_fields: Vec<CardDetailCustomField>,
280}
281#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
282pub struct CardCustomFieldQuerySuccess {
283 pub board_id: String,
284 pub custom_field_id: String,
285 pub value: String,
286 pub cards: Vec<CardDetail>,
287}
288
289#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
290pub struct CardLabelCollection {
291 pub board_id: String,
292 pub list_id: String,
293 pub card_id: String,
294 pub label_ids: Vec<Option<String>>,
295}