1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
use crate::Client;
use crate::ClientResult;
pub struct EarningType {
pub client: Client,
}
impl EarningType {
#[doc(hidden)]
pub fn new(client: Client) -> Self {
EarningType { client }
}
/**
* Get all earning types for a company.
*
* This function performs a `GET` to the `/v1/companies/{company_id}/earning_types` endpoint.
*
* A payroll item in Gusto is associated to an earning type to name the type of earning described by the payroll item.
*
* #### Default Earning Type
* Certain earning types are special because they have tax considerations. Those earning types are mostly the same for every company depending on its legal structure (LLC, Corporation, etc.)
*
* #### Custom Earning Type
* Custom earning types are all the other earning types added specifically for a company.
*/
pub async fn get_company(
&self,
company_id: &str,
) -> ClientResult<crate::Response<crate::types::EarningTypeListResponse>> {
let url = self.client.url(
&format!(
"/v1/companies/{}/earning_types",
crate::progenitor_support::encode_path(company_id),
),
None,
);
self.client
.get(
&url,
crate::Message {
body: None,
content_type: None,
},
)
.await
}
/**
* Create a custom earning type.
*
* This function performs a `POST` to the `/v1/companies/{company_id}/earning_types` endpoint.
*
* Create a custom earning type.
*
* If an inactive earning type exists with the same name, this will reactivate it instead of creating a new one.
*/
pub async fn post_company(
&self,
company_id: &str,
body: &crate::types::PostCompanyEarningTypesRequest,
) -> ClientResult<crate::Response<crate::types::EarningType>> {
let url = self.client.url(
&format!(
"/v1/companies/{}/earning_types",
crate::progenitor_support::encode_path(company_id),
),
None,
);
self.client
.post(
&url,
crate::Message {
body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
content_type: Some("application/json".to_string()),
},
)
.await
}
/**
* Update an earning type.
*
* This function performs a `PUT` to the `/v1/companies/{company_id}/earning_types/{earning_type_uuid}` endpoint.
*
* Update an earning type.
*/
pub async fn put_company_type(
&self,
company_id: &str,
earning_type_uuid: &str,
body: &crate::types::PutCompanyEarningTypeRequest,
) -> ClientResult<crate::Response<crate::types::EarningType>> {
let url = self.client.url(
&format!(
"/v1/companies/{}/earning_types/{}",
crate::progenitor_support::encode_path(company_id),
crate::progenitor_support::encode_path(earning_type_uuid),
),
None,
);
self.client
.put(
&url,
crate::Message {
body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
content_type: Some("application/json".to_string()),
},
)
.await
}
/**
* Deactivate an earning type.
*
* This function performs a `DELETE` to the `/v1/companies/{company_id}/earning_types/{earning_type_uuid}` endpoint.
*
* Deactivate an earning type.
*/
pub async fn delete_company_type(
&self,
company_id: &str,
earning_type_uuid: &str,
) -> ClientResult<crate::Response<()>> {
let url = self.client.url(
&format!(
"/v1/companies/{}/earning_types/{}",
crate::progenitor_support::encode_path(company_id),
crate::progenitor_support::encode_path(earning_type_uuid),
),
None,
);
self.client
.delete(
&url,
crate::Message {
body: None,
content_type: None,
},
)
.await
}
}