1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
8pub struct Money {
9 pub value: f64,
10 #[serde(rename = "currencyCode")]
11 pub currency_code: String,
12}
13
14#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
16pub struct Amount {
17 pub amount: Option<String>,
18 pub currency: Option<String>,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
23pub struct Link {
24 pub rel: String,
25 pub href: String,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub method: Option<String>,
28 #[serde(rename = "isTemplated", skip_serializing_if = "Option::is_none")]
29 pub is_templated: Option<bool>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
34pub struct Page {
35 pub size: u32,
36 #[serde(rename = "totalElements")]
37 pub total_elements: u64,
38 #[serde(rename = "totalPages")]
39 pub total_pages: u32,
40 pub number: u32,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
45pub struct NamedRef {
46 pub id: String,
47 pub name: String,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
52pub struct PagedResponse<T> {
53 pub links: Vec<Link>,
54 pub content: Vec<T>,
55 pub page: Page,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
60pub struct CustomData {
61 pub id: String,
62 pub value: String,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub is_valid: Option<bool>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub list_item_url: Option<String>,
67}
68
69#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
71pub struct Location {
72 pub id: String,
73 pub name: String,
74 pub city: Option<String>,
75 #[serde(rename = "countrySubDivisionCode")]
76 pub country_sub_division_code: Option<String>,
77 #[serde(rename = "countryCode")]
78 pub country_code: Option<String>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
83pub struct ExpenseType {
84 pub id: String,
85 pub name: String,
86 pub code: Option<String>,
87 #[serde(rename = "isDeleted")]
88 pub is_deleted: Option<bool>,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
93pub struct PaymentType {
94 pub id: String,
95 pub name: String,
96 pub code: String,
97}
98
99#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
101pub struct Vendor {
102 pub id: Option<String>,
103 pub name: Option<String>,
104 pub description: Option<String>,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
109pub struct StatusRef {
110 pub code: String,
111 pub name: String,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
116pub struct OwnerRef {
117 pub id: String,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub first_name: Option<String>,
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub last_name: Option<String>,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
126pub struct ExchangeRate {
127 pub value: f64,
128 pub operation: String,
129}
130
131#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
133pub struct UserName {
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub formatted: Option<String>,
136 #[serde(skip_serializing_if = "Option::is_none")]
137 pub family_name: Option<String>,
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub given_name: Option<String>,
140}
141
142#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
144pub struct Email {
145 pub value: String,
146 #[serde(skip_serializing_if = "Option::is_none")]
147 pub type_: Option<String>,
148 #[serde(skip_serializing_if = "Option::is_none")]
149 pub verified: Option<bool>,
150 #[serde(skip_serializing_if = "Option::is_none")]
151 pub notifications: Option<bool>,
152}
153
154#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
156pub struct Address {
157 #[serde(skip_serializing_if = "Option::is_none")]
158 pub type_: Option<String>,
159 #[serde(skip_serializing_if = "Option::is_none")]
160 pub street_address: Option<String>,
161 #[serde(skip_serializing_if = "Option::is_none")]
162 pub locality: Option<String>,
163 #[serde(skip_serializing_if = "Option::is_none")]
164 pub region: Option<String>,
165 #[serde(skip_serializing_if = "Option::is_none")]
166 pub postal_code: Option<String>,
167 #[serde(skip_serializing_if = "Option::is_none")]
168 pub country: Option<String>,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
173pub struct Meta {
174 #[serde(rename = "resourceType")]
175 pub resource_type: String,
176 pub created: Option<DateTime<Utc>>,
177 #[serde(rename = "lastModified")]
178 pub last_modified: Option<DateTime<Utc>>,
179 pub version: Option<i64>,
180 pub location: Option<String>,
181}