pipedrive_rs/apis/
users_api.rs

1/*
2 * Pipedrive API v1
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13
14use crate::apis::ResponseContent;
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`add_user`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AddUserError {
22    Status403(crate::models::FailResponse),
23    UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`find_users_by_name`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum FindUsersByNameError {
30    UnknownValue(serde_json::Value),
31}
32
33/// struct for typed errors of method [`get_current_user`]
34#[derive(Debug, Clone, Serialize, Deserialize)]
35#[serde(untagged)]
36pub enum GetCurrentUserError {
37    Status401(crate::models::UnathorizedResponse),
38    UnknownValue(serde_json::Value),
39}
40
41/// struct for typed errors of method [`get_user`]
42#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(untagged)]
44pub enum GetUserError {
45    Status404(crate::models::FailResponse),
46    UnknownValue(serde_json::Value),
47}
48
49/// struct for typed errors of method [`get_user_followers`]
50#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(untagged)]
52pub enum GetUserFollowersError {
53    Status403(crate::models::FailResponse),
54    UnknownValue(serde_json::Value),
55}
56
57/// struct for typed errors of method [`get_user_permissions`]
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(untagged)]
60pub enum GetUserPermissionsError {
61    UnknownValue(serde_json::Value),
62}
63
64/// struct for typed errors of method [`get_user_role_assignments`]
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(untagged)]
67pub enum GetUserRoleAssignmentsError {
68    UnknownValue(serde_json::Value),
69}
70
71/// struct for typed errors of method [`get_user_role_settings`]
72#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum GetUserRoleSettingsError {
75    UnknownValue(serde_json::Value),
76}
77
78/// struct for typed errors of method [`get_users`]
79#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(untagged)]
81pub enum GetUsersError {
82    UnknownValue(serde_json::Value),
83}
84
85/// struct for typed errors of method [`update_user`]
86#[derive(Debug, Clone, Serialize, Deserialize)]
87#[serde(untagged)]
88pub enum UpdateUserError {
89    Status403(crate::models::FailResponse),
90    Status404(crate::models::FailResponse),
91    UnknownValue(serde_json::Value),
92}
93
94
95/// Adds a new user to the company, returns the ID upon success.
96pub async fn add_user(configuration: &configuration::Configuration, add_user_request: Option<crate::models::AddUserRequest>) -> Result<crate::models::UserResponse200, Error<AddUserError>> {
97    let local_var_configuration = configuration;
98
99    let local_var_client = &local_var_configuration.client;
100
101    let local_var_uri_str = format!("{}/users", local_var_configuration.base_path);
102    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
103
104    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
105        let local_var_key = local_var_apikey.key.clone();
106        let local_var_value = match local_var_apikey.prefix {
107            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
108            None => local_var_key,
109        };
110        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
111    }
112    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
113        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
114    }
115    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
116        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
117    };
118    local_var_req_builder = local_var_req_builder.json(&add_user_request);
119
120    let local_var_req = local_var_req_builder.build()?;
121    let local_var_resp = local_var_client.execute(local_var_req).await?;
122
123    let local_var_status = local_var_resp.status();
124    let local_var_content = local_var_resp.text().await?;
125
126    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
127        serde_json::from_str(&local_var_content).map_err(Error::from)
128    } else {
129        let local_var_entity: Option<AddUserError> = serde_json::from_str(&local_var_content).ok();
130        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
131        Err(Error::ResponseError(local_var_error))
132    }
133}
134
135/// Finds users by their name.
136pub async fn find_users_by_name(configuration: &configuration::Configuration, term: &str, search_by_email: Option<f32>) -> Result<crate::models::UsersResponse200, Error<FindUsersByNameError>> {
137    let local_var_configuration = configuration;
138
139    let local_var_client = &local_var_configuration.client;
140
141    let local_var_uri_str = format!("{}/users/find", local_var_configuration.base_path);
142    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
143
144    local_var_req_builder = local_var_req_builder.query(&[("term", &term.to_string())]);
145    if let Some(ref local_var_str) = search_by_email {
146        local_var_req_builder = local_var_req_builder.query(&[("search_by_email", &local_var_str.to_string())]);
147    }
148    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
149        let local_var_key = local_var_apikey.key.clone();
150        let local_var_value = match local_var_apikey.prefix {
151            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
152            None => local_var_key,
153        };
154        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
155    }
156    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
157        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
158    }
159    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
160        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
161    };
162
163    let local_var_req = local_var_req_builder.build()?;
164    let local_var_resp = local_var_client.execute(local_var_req).await?;
165
166    let local_var_status = local_var_resp.status();
167    let local_var_content = local_var_resp.text().await?;
168
169    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
170        serde_json::from_str(&local_var_content).map_err(Error::from)
171    } else {
172        let local_var_entity: Option<FindUsersByNameError> = serde_json::from_str(&local_var_content).ok();
173        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
174        Err(Error::ResponseError(local_var_error))
175    }
176}
177
178/// Returns data about an authorized user within the company with bound company data: company ID, company name, and domain. Note that the `locale` property means 'Date/number format' in the Pipedrive account settings, not the chosen language.
179pub async fn get_current_user(configuration: &configuration::Configuration, ) -> Result<crate::models::GetCurrentUserResponse200, Error<GetCurrentUserError>> {
180    let local_var_configuration = configuration;
181
182    let local_var_client = &local_var_configuration.client;
183
184    let local_var_uri_str = format!("{}/users/me", local_var_configuration.base_path);
185    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
186
187    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
188        let local_var_key = local_var_apikey.key.clone();
189        let local_var_value = match local_var_apikey.prefix {
190            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
191            None => local_var_key,
192        };
193        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
194    }
195    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
196        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
197    }
198    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
199        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
200    };
201
202    let local_var_req = local_var_req_builder.build()?;
203    let local_var_resp = local_var_client.execute(local_var_req).await?;
204
205    let local_var_status = local_var_resp.status();
206    let local_var_content = local_var_resp.text().await?;
207
208    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
209        serde_json::from_str(&local_var_content).map_err(Error::from)
210    } else {
211        let local_var_entity: Option<GetCurrentUserError> = serde_json::from_str(&local_var_content).ok();
212        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
213        Err(Error::ResponseError(local_var_error))
214    }
215}
216
217/// Returns data about a specific user within the company.
218pub async fn get_user(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::UserResponse200, Error<GetUserError>> {
219    let local_var_configuration = configuration;
220
221    let local_var_client = &local_var_configuration.client;
222
223    let local_var_uri_str = format!("{}/users/{id}", local_var_configuration.base_path, id=id);
224    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
225
226    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
227        let local_var_key = local_var_apikey.key.clone();
228        let local_var_value = match local_var_apikey.prefix {
229            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
230            None => local_var_key,
231        };
232        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
233    }
234    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
235        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
236    }
237    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
238        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
239    };
240
241    let local_var_req = local_var_req_builder.build()?;
242    let local_var_resp = local_var_client.execute(local_var_req).await?;
243
244    let local_var_status = local_var_resp.status();
245    let local_var_content = local_var_resp.text().await?;
246
247    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
248        serde_json::from_str(&local_var_content).map_err(Error::from)
249    } else {
250        let local_var_entity: Option<GetUserError> = serde_json::from_str(&local_var_content).ok();
251        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
252        Err(Error::ResponseError(local_var_error))
253    }
254}
255
256/// Lists the followers of a specific user.
257pub async fn get_user_followers(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::UserIds, Error<GetUserFollowersError>> {
258    let local_var_configuration = configuration;
259
260    let local_var_client = &local_var_configuration.client;
261
262    let local_var_uri_str = format!("{}/users/{id}/followers", local_var_configuration.base_path, id=id);
263    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
264
265    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
266        let local_var_key = local_var_apikey.key.clone();
267        let local_var_value = match local_var_apikey.prefix {
268            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
269            None => local_var_key,
270        };
271        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
272    }
273    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
274        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
275    }
276    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
277        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
278    };
279
280    let local_var_req = local_var_req_builder.build()?;
281    let local_var_resp = local_var_client.execute(local_var_req).await?;
282
283    let local_var_status = local_var_resp.status();
284    let local_var_content = local_var_resp.text().await?;
285
286    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
287        serde_json::from_str(&local_var_content).map_err(Error::from)
288    } else {
289        let local_var_entity: Option<GetUserFollowersError> = serde_json::from_str(&local_var_content).ok();
290        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
291        Err(Error::ResponseError(local_var_error))
292    }
293}
294
295/// Lists aggregated permissions over all assigned permission sets for a user.
296pub async fn get_user_permissions(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::GetUserPermissionsResponse200, Error<GetUserPermissionsError>> {
297    let local_var_configuration = configuration;
298
299    let local_var_client = &local_var_configuration.client;
300
301    let local_var_uri_str = format!("{}/users/{id}/permissions", local_var_configuration.base_path, id=id);
302    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
303
304    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
305        let local_var_key = local_var_apikey.key.clone();
306        let local_var_value = match local_var_apikey.prefix {
307            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
308            None => local_var_key,
309        };
310        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
311    }
312    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
313        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
314    }
315    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
316        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
317    };
318
319    let local_var_req = local_var_req_builder.build()?;
320    let local_var_resp = local_var_client.execute(local_var_req).await?;
321
322    let local_var_status = local_var_resp.status();
323    let local_var_content = local_var_resp.text().await?;
324
325    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
326        serde_json::from_str(&local_var_content).map_err(Error::from)
327    } else {
328        let local_var_entity: Option<GetUserPermissionsError> = serde_json::from_str(&local_var_content).ok();
329        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
330        Err(Error::ResponseError(local_var_error))
331    }
332}
333
334/// Lists role assignments for a user.
335pub async fn get_user_role_assignments(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetUserRoleAssignmentsResponse200, Error<GetUserRoleAssignmentsError>> {
336    let local_var_configuration = configuration;
337
338    let local_var_client = &local_var_configuration.client;
339
340    let local_var_uri_str = format!("{}/users/{id}/roleAssignments", local_var_configuration.base_path, id=id);
341    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
342
343    if let Some(ref local_var_str) = start {
344        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
345    }
346    if let Some(ref local_var_str) = limit {
347        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
348    }
349    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
350        let local_var_key = local_var_apikey.key.clone();
351        let local_var_value = match local_var_apikey.prefix {
352            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
353            None => local_var_key,
354        };
355        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
356    }
357    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
358        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
359    }
360    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
361        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
362    };
363
364    let local_var_req = local_var_req_builder.build()?;
365    let local_var_resp = local_var_client.execute(local_var_req).await?;
366
367    let local_var_status = local_var_resp.status();
368    let local_var_content = local_var_resp.text().await?;
369
370    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
371        serde_json::from_str(&local_var_content).map_err(Error::from)
372    } else {
373        let local_var_entity: Option<GetUserRoleAssignmentsError> = serde_json::from_str(&local_var_content).ok();
374        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
375        Err(Error::ResponseError(local_var_error))
376    }
377}
378
379/// Lists the settings of user's assigned role.
380pub async fn get_user_role_settings(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::GetRoleSettingsResponse200, Error<GetUserRoleSettingsError>> {
381    let local_var_configuration = configuration;
382
383    let local_var_client = &local_var_configuration.client;
384
385    let local_var_uri_str = format!("{}/users/{id}/roleSettings", local_var_configuration.base_path, id=id);
386    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
387
388    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
389        let local_var_key = local_var_apikey.key.clone();
390        let local_var_value = match local_var_apikey.prefix {
391            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
392            None => local_var_key,
393        };
394        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
395    }
396    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
397        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
398    }
399    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
400        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
401    };
402
403    let local_var_req = local_var_req_builder.build()?;
404    let local_var_resp = local_var_client.execute(local_var_req).await?;
405
406    let local_var_status = local_var_resp.status();
407    let local_var_content = local_var_resp.text().await?;
408
409    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
410        serde_json::from_str(&local_var_content).map_err(Error::from)
411    } else {
412        let local_var_entity: Option<GetUserRoleSettingsError> = serde_json::from_str(&local_var_content).ok();
413        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
414        Err(Error::ResponseError(local_var_error))
415    }
416}
417
418/// Returns data about all users within the company.
419pub async fn get_users(configuration: &configuration::Configuration, ) -> Result<crate::models::UsersResponse200, Error<GetUsersError>> {
420    let local_var_configuration = configuration;
421
422    let local_var_client = &local_var_configuration.client;
423
424    let local_var_uri_str = format!("{}/users", local_var_configuration.base_path);
425    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
426
427    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
428        let local_var_key = local_var_apikey.key.clone();
429        let local_var_value = match local_var_apikey.prefix {
430            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
431            None => local_var_key,
432        };
433        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
434    }
435    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
436        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
437    }
438    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
439        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
440    };
441
442    let local_var_req = local_var_req_builder.build()?;
443    let local_var_resp = local_var_client.execute(local_var_req).await?;
444
445    let local_var_status = local_var_resp.status();
446    let local_var_content = local_var_resp.text().await?;
447
448    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
449        serde_json::from_str(&local_var_content).map_err(Error::from)
450    } else {
451        let local_var_entity: Option<GetUsersError> = serde_json::from_str(&local_var_content).ok();
452        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
453        Err(Error::ResponseError(local_var_error))
454    }
455}
456
457/// Updates the properties of a user. Currently, only `active_flag` can be updated.
458pub async fn update_user(configuration: &configuration::Configuration, id: i32, update_user_request: Option<crate::models::UpdateUserRequest>) -> Result<crate::models::UserResponse200, Error<UpdateUserError>> {
459    let local_var_configuration = configuration;
460
461    let local_var_client = &local_var_configuration.client;
462
463    let local_var_uri_str = format!("{}/users/{id}", local_var_configuration.base_path, id=id);
464    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
465
466    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
467        let local_var_key = local_var_apikey.key.clone();
468        let local_var_value = match local_var_apikey.prefix {
469            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
470            None => local_var_key,
471        };
472        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
473    }
474    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
475        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
476    }
477    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
478        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
479    };
480    local_var_req_builder = local_var_req_builder.json(&update_user_request);
481
482    let local_var_req = local_var_req_builder.build()?;
483    let local_var_resp = local_var_client.execute(local_var_req).await?;
484
485    let local_var_status = local_var_resp.status();
486    let local_var_content = local_var_resp.text().await?;
487
488    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
489        serde_json::from_str(&local_var_content).map_err(Error::from)
490    } else {
491        let local_var_entity: Option<UpdateUserError> = serde_json::from_str(&local_var_content).ok();
492        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
493        Err(Error::ResponseError(local_var_error))
494    }
495}
496