1use serde::Serialize;
2use serde_json::Number;
3
4#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
5pub struct CardSummary {
6 pub card_id: String,
7 pub title: Option<String>,
8 pub description: Option<String>,
9 pub swimlane_id: Option<String>,
10 pub received_at: Option<String>,
11 pub start_at: Option<String>,
12 pub due_at: Option<String>,
13 pub end_at: Option<String>,
14 pub assignees: Vec<String>,
15 pub sort: Option<Number>,
16}
17
18#[derive(Debug, Eq, PartialEq, Serialize)]
19pub struct CardCollectionSuccess {
20 pub board_id: String,
21 pub list_id: String,
22 pub cards: Vec<CardSummary>,
23}
24
25#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
26#[serde(untagged)]
27pub enum CardDetailCustomFieldValue {
28 String(String),
29 Number(Number),
30 Boolean(bool),
31 Strings(Vec<Option<String>>),
32}
33
34#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
35pub struct CardDetailCustomField {
36 pub custom_field_id: Option<String>,
37 pub value: Option<CardDetailCustomFieldValue>,
38}
39
40#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
41#[serde(rename_all = "lowercase")]
42pub enum CardDetailStickerHighlight {
43 Underline,
44 Round,
45}
46
47#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
48pub struct CardDetailSticker {
49 pub icon: Option<String>,
50 pub name: Option<String>,
51 pub highlight: Option<CardDetailStickerHighlight>,
52 pub position: Option<Number>,
53}
54
55#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
56pub struct CardDetailLocation {
57 pub location_id: String,
58 pub name: Option<String>,
59 pub address: Option<String>,
60 pub latitude: Option<Number>,
61 pub longitude: Option<Number>,
62}
63
64#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
65pub struct CardDetailDependency {
66 pub card_id: String,
67 pub dependency_type: Option<String>,
68 pub color: Option<String>,
69 pub icon: Option<String>,
70}
71
72#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
73pub struct CardDetailVote {
74 pub question: String,
75 pub positive: Vec<String>,
76 pub negative: Vec<String>,
77 pub end: Option<String>,
78 pub public: bool,
79 pub allow_non_board_members: bool,
80}
81
82#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
83pub struct CardDetailPoker {
84 pub question: Option<bool>,
85 pub one: Vec<String>,
86 pub two: Vec<String>,
87 pub three: Vec<String>,
88 pub five: Vec<String>,
89 pub eight: Vec<String>,
90 pub thirteen: Vec<String>,
91 pub twenty: Vec<String>,
92 pub forty: Vec<String>,
93 pub one_hundred: Vec<String>,
94 pub unsure: Vec<String>,
95 pub end: Option<String>,
96 pub allow_non_board_members: Option<bool>,
97 pub estimation: Option<Number>,
98}
99
100#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
101pub struct CardDetail {
102 pub card_id: String,
103 pub title: Option<String>,
104 pub archived: bool,
105 pub archived_at: Option<String>,
106 pub deleted_at: Option<String>,
107 pub deleted_by: Option<String>,
108 pub delete_batch_id: Option<String>,
109 pub parent_id: Option<String>,
110 pub list_id: Option<String>,
111 pub swimlane_id: String,
112 pub board_id: Option<String>,
113 pub cover_id: Option<String>,
114 pub color: Option<String>,
115 pub created_at: String,
116 pub modified_at: String,
117 pub custom_fields: Vec<CardDetailCustomField>,
118 pub date_last_activity: String,
119 pub description: Option<String>,
120 pub requested_by: Option<String>,
121 pub assigned_by: Option<String>,
122 pub label_ids: Vec<String>,
123 pub members: Vec<String>,
124 pub assignees: Vec<String>,
125 pub requesters: Vec<String>,
126 pub assigners: Vec<String>,
127 pub received_at: Option<String>,
128 pub start_at: Option<String>,
129 pub due_at: Option<String>,
130 pub end_at: Option<String>,
131 pub due_complete: Option<bool>,
132 pub stickers: Vec<CardDetailSticker>,
133 pub location_name: Option<String>,
134 pub location_address: Option<String>,
135 pub location_latitude: Option<Number>,
136 pub location_longitude: Option<Number>,
137 pub locations: Vec<CardDetailLocation>,
138 pub spent_time: Option<Number>,
139 pub is_overtime: Option<bool>,
140 pub user_id: String,
141 pub sort: Option<Number>,
142 pub subtask_sort: Option<Number>,
143 pub card_type: String,
144 pub linked_id: Option<String>,
145 pub card_dependencies: Vec<CardDetailDependency>,
146 pub vote: Option<CardDetailVote>,
147 pub poker: Option<CardDetailPoker>,
148 pub target_id_gantt: Vec<String>,
149 pub link_type_gantt: Vec<Number>,
150 pub link_id_gantt: Vec<String>,
151 pub card_number: Option<Number>,
152 pub show_activities: bool,
153 pub show_list_on_minicard: Option<bool>,
154 pub show_checklist_at_minicard: Option<bool>,
155 pub hide_finished_checklist_if_items_are_hidden: Option<bool>,
156}
157
158#[derive(Debug, Eq, PartialEq, Serialize)]
159pub struct CardCreateSuccess {
160 pub board_id: String,
161 pub list_id: String,
162 pub card_id: String,
163}
164
165#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
166#[serde(rename_all = "snake_case")]
167pub enum CardSubmittedField {
168 Title,
169 Sort,
170 ParentId,
171 Description,
172 Color,
173 LabelIds,
174 RequestedBy,
175 AssignedBy,
176 ReceivedAt,
177 StartAt,
178 DueAt,
179 EndAt,
180 SpentTime,
181 IsOverTime,
182 Members,
183 Assignees,
184 DueComplete,
185 SwimlaneId,
186 ListId,
187 NewBoardId,
188 NewSwimlaneId,
189 NewListId,
190 Archive,
191 Vote,
192 Poker,
193 CustomFields,
194 Stickers,
195 Locations,
196}
197
198#[derive(Debug, Eq, PartialEq, Serialize)]
199pub struct CardUpdateSuccess {
200 pub board_id: String,
201 pub list_id: String,
202 pub card_id: String,
203 pub submitted_fields: Vec<CardSubmittedField>,
204}
205
206#[derive(Debug, Eq, PartialEq, Serialize)]
207pub struct CardArchiveSuccess {
208 pub board_id: String,
209 pub list_id: String,
210 pub card_id: String,
211 pub archived: bool,
212 pub archived_at: String,
213}
214
215#[derive(Debug, Eq, PartialEq, Serialize)]
216pub struct CardRestoreSuccess {
217 pub board_id: String,
218 pub list_id: String,
219 pub card_id: String,
220 pub archived: bool,
221}
222
223#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
224#[serde(rename_all = "snake_case")]
225pub enum CardDeleteMode {
226 Hard,
227}
228
229#[derive(Debug, Eq, PartialEq, Serialize)]
230pub struct CardDeleteSuccess {
231 pub board_id: String,
232 pub list_id: String,
233 pub card_id: String,
234 pub deleted: bool,
235 pub delete_mode: CardDeleteMode,
236}