1use serde::{Deserialize, Serialize};
2use serde_json::Number;
3
4#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
5pub struct BoardSummary {
6 pub board_id: String,
7 pub title: String,
8}
9
10pub type UserBoardSummary = BoardSummary;
11
12#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
13#[serde(rename_all = "snake_case")]
14pub struct BoardDetailMember {
15 pub user_id: String,
16 pub is_admin: bool,
17 pub is_active: bool,
18 pub is_no_comments: Option<bool>,
19 pub is_comment_only: Option<bool>,
20 pub is_worker: Option<bool>,
21 pub is_normal_assigned_only: Option<bool>,
22 pub is_comment_assigned_only: Option<bool>,
23 pub is_read_only: Option<bool>,
24 pub is_read_assigned_only: Option<bool>,
25}
26
27#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
28#[serde(rename_all = "snake_case")]
29pub struct BoardDetailWatcher {
30 pub user_id: String,
31 pub level: String,
32}
33
34#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
35#[serde(rename_all = "snake_case")]
36pub struct BoardDetailLabel {
37 pub label_id: String,
38 pub name: Option<String>,
39 pub color: String,
40}
41
42#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
43#[serde(rename_all = "snake_case")]
44pub struct BoardDetailOrganization {
45 pub org_id: String,
46 pub org_display_name: String,
47 pub is_active: bool,
48}
49
50#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
51#[serde(rename_all = "snake_case")]
52pub struct BoardDetailTeam {
53 pub team_id: String,
54 pub team_display_name: String,
55 pub is_active: bool,
56}
57
58#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
59#[serde(rename_all = "snake_case")]
60pub struct BoardDetailDomain {
61 pub domain: String,
62 pub is_active: bool,
63}
64
65#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
66#[serde(rename_all = "snake_case")]
67pub struct BoardDetail {
68 pub board_id: String,
69 pub title: String,
70 pub slug: Option<String>,
71 pub archived: Option<bool>,
72 pub archived_at: Option<String>,
73 pub created_at: Option<String>,
74 pub modified_at: Option<String>,
75 pub stars: Option<Number>,
76 #[serde(default)]
77 pub labels: Vec<BoardDetailLabel>,
78 #[serde(default)]
79 pub members: Vec<BoardDetailMember>,
80 #[serde(default)]
81 pub watchers: Vec<BoardDetailWatcher>,
82 pub permission: Option<String>,
83 #[serde(default)]
84 pub orgs: Vec<BoardDetailOrganization>,
85 #[serde(default)]
86 pub teams: Vec<BoardDetailTeam>,
87 #[serde(default)]
88 pub domains: Vec<BoardDetailDomain>,
89 #[serde(default)]
90 pub import_usernames: Vec<String>,
91 pub color: Option<String>,
92 #[serde(default)]
93 pub custom_theme_colors: Vec<String>,
94 pub background_image_url: Option<String>,
95 pub background_image_id: Option<String>,
96 pub allows_card_counter_list: Option<bool>,
97 pub card_aging: Option<bool>,
98 pub show_dependencies: Option<bool>,
99 pub card_aging_days1: Option<Number>,
100 pub card_aging_days2: Option<Number>,
101 pub card_aging_days3: Option<Number>,
102 pub allows_board_member_list: Option<bool>,
103 pub description: Option<String>,
104 pub subtasks_default_board_id: Option<String>,
105 pub migration_version: Option<Number>,
106 pub subtasks_default_list_id: Option<String>,
107 pub date_settings_default_board_id: Option<String>,
108 pub date_settings_default_list_id: Option<String>,
109 pub allows_subtasks: Option<bool>,
110 pub allows_subtasks_on_minicard: Option<bool>,
111 pub allows_attachments: Option<bool>,
112 pub allows_attachments_on_minicard: Option<bool>,
113 pub allows_checklists: Option<bool>,
114 pub allows_checklists_on_minicard: Option<bool>,
115 pub allows_custom_fields: Option<bool>,
116 pub allows_custom_fields_on_minicard: Option<bool>,
117 pub allows_checklist_count_badge_on_minicard: Option<bool>,
118 pub allows_comments: Option<bool>,
119 pub allows_description_title: Option<bool>,
120 pub allows_description_title_on_minicard: Option<bool>,
121 pub allows_description_text: Option<bool>,
122 pub allows_description_text_on_minicard: Option<bool>,
123 pub allows_cover_attachment_on_minicard: Option<bool>,
124 pub allows_cover_attachment_on_card: Option<bool>,
125 pub allows_badge_attachment_on_minicard: Option<bool>,
126 pub allows_attachment_count_on_card: Option<bool>,
127 pub allows_checklist_count_badge_on_card: Option<bool>,
128 pub allows_card_sorting_by_number_on_minicard: Option<bool>,
129 pub allows_card_number: Option<bool>,
130 pub allows_card_number_on_minicard: Option<bool>,
131 pub allows_activities: Option<bool>,
132 pub allows_labels: Option<bool>,
133 pub allows_labels_on_minicard: Option<bool>,
134 pub allows_creator: Option<bool>,
135 pub allows_creator_on_minicard: Option<bool>,
136 pub allows_assignee: Option<bool>,
137 pub allows_assignee_on_minicard: Option<bool>,
138 pub allows_members: Option<bool>,
139 pub allows_members_on_minicard: Option<bool>,
140 pub allows_requested_by: Option<bool>,
141 pub allows_requested_by_on_minicard: Option<bool>,
142 pub allows_card_sorting_by_number: Option<bool>,
143 pub allows_show_lists: Option<bool>,
144 pub allows_assigned_by: Option<bool>,
145 pub allows_assigned_by_on_minicard: Option<bool>,
146 pub allows_show_lists_on_minicard: Option<bool>,
147 pub allows_checklist_at_minicard: Option<bool>,
148 pub allows_received_date: Option<bool>,
149 pub restrict_comment_editing: Option<bool>,
150 pub allows_personal_list_width: Option<bool>,
151 pub auto_width: Option<bool>,
152 pub allows_received_date_on_minicard: Option<bool>,
153 pub allows_start_date: Option<bool>,
154 pub allows_start_date_on_minicard: Option<bool>,
155 pub allows_end_date: Option<bool>,
156 pub allows_end_date_on_minicard: Option<bool>,
157 pub allows_due_date: Option<bool>,
158 pub allows_due_date_on_minicard: Option<bool>,
159 pub allows_due_complete: Option<bool>,
160 pub allows_due_complete_on_minicard: Option<bool>,
161 pub present_parent_task: Option<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 spent_time: Option<Number>,
167 pub is_overtime: Option<bool>,
168 pub board_type: Option<String>,
169 pub sort: Option<Number>,
170 pub show_activities: Option<bool>,
171}
172
173#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
174#[serde(rename_all = "snake_case")]
175pub enum BoardListScope {
176 Active,
177 Public,
178}
179
180#[derive(Debug, Eq, PartialEq, Serialize)]
181pub struct BoardListSuccess {
182 pub scope: BoardListScope,
183 pub boards: Vec<BoardSummary>,
184}
185
186#[derive(Debug, Eq, PartialEq, Serialize)]
187pub struct BoardCountSuccess {
188 pub private: u64,
189 pub public: u64,
190}
191
192#[derive(Debug, Eq, PartialEq, Serialize)]
193pub struct BoardCreateSuccess {
194 pub board_id: String,
195 pub default_swimlane_id: String,
196}
197
198#[derive(Debug, Eq, PartialEq, Serialize)]
199pub struct BoardRenameSuccess {
200 pub board_id: String,
201 pub title: String,
202}
203
204#[derive(Debug, Eq, PartialEq, Serialize)]
205pub struct BoardDeleteSuccess {
206 pub board_id: String,
207 pub deleted: bool,
208}