1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct User {
6 pub id: i64,
7 pub email: String,
8 #[serde(default)]
9 pub fullname: Option<String>,
10 #[serde(default)]
11 pub default_workspace_id: Option<i64>,
12 #[serde(default)]
13 pub timezone: Option<String>,
14 #[serde(default)]
15 pub beginning_of_week: Option<i64>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct TimeEntry {
20 pub id: i64,
21 #[serde(default)]
22 pub workspace_id: Option<i64>,
23 #[serde(default)]
24 pub project_id: Option<i64>,
25 #[serde(default)]
26 pub task_id: Option<i64>,
27 #[serde(default)]
28 pub billable: Option<bool>,
29 pub start: DateTime<Utc>,
30 #[serde(default)]
31 pub stop: Option<DateTime<Utc>>,
32 pub duration: i64,
33 #[serde(default)]
34 pub description: Option<String>,
35 #[serde(default)]
36 pub tags: Option<Vec<String>>,
37 #[serde(default)]
38 pub tag_ids: Option<Vec<i64>>,
39 #[serde(default)]
40 pub duronly: Option<bool>,
41 #[serde(default)]
42 pub at: Option<DateTime<Utc>>,
43 #[serde(default)]
44 pub server_deleted_at: Option<DateTime<Utc>>,
45 #[serde(default)]
46 pub user_id: Option<i64>,
47 #[serde(default)]
48 pub uid: Option<i64>,
49 #[serde(default)]
50 pub wid: Option<i64>,
51 #[serde(default)]
52 pub pid: Option<i64>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Project {
57 pub id: i64,
58 #[serde(default)]
59 pub workspace_id: Option<i64>,
60 #[serde(default)]
61 pub client_id: Option<i64>,
62 pub name: String,
63 #[serde(default)]
64 pub is_private: Option<bool>,
65 #[serde(default)]
66 pub active: Option<bool>,
67 #[serde(default)]
68 pub at: Option<DateTime<Utc>>,
69 #[serde(default)]
70 pub created_at: Option<DateTime<Utc>>,
71 #[serde(default)]
72 pub color: Option<String>,
73 #[serde(default)]
74 pub billable: Option<bool>,
75 #[serde(default)]
76 pub template: Option<bool>,
77 #[serde(default)]
78 pub auto_estimates: Option<bool>,
79 #[serde(default)]
80 pub estimated_hours: Option<i64>,
81 #[serde(default)]
82 pub rate: Option<f64>,
83 #[serde(default)]
84 pub currency: Option<String>,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct Workspace {
89 pub id: i64,
90 pub name: String,
91 #[serde(default)]
92 pub premium: Option<bool>,
93 #[serde(default)]
94 pub admin: Option<bool>,
95 #[serde(default)]
96 pub default_hourly_rate: Option<f64>,
97 #[serde(default)]
98 pub default_currency: Option<String>,
99 #[serde(default)]
100 pub only_admins_may_create_projects: Option<bool>,
101 #[serde(default)]
102 pub only_admins_see_billable_rates: Option<bool>,
103 #[serde(default)]
104 pub rounding: Option<i32>,
105 #[serde(default)]
106 pub rounding_minutes: Option<i32>,
107 #[serde(default)]
108 pub at: Option<DateTime<Utc>>,
109 #[serde(default)]
110 pub logo_url: Option<String>,
111}