pipedrive_rs/apis/
call_logs_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_call_log`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AddCallLogError {
22    Status400(crate::models::CallLogResponse400),
23    Status403(crate::models::CallLogResponse403),
24    Status404(crate::models::CallLogResponse404),
25    Status500(crate::models::CallLogResponse500),
26    UnknownValue(serde_json::Value),
27}
28
29/// struct for typed errors of method [`add_call_log_audio_file`]
30#[derive(Debug, Clone, Serialize, Deserialize)]
31#[serde(untagged)]
32pub enum AddCallLogAudioFileError {
33    Status404(crate::models::CallLogResponse404),
34    Status409(crate::models::CallLogResponse409),
35    Status500(crate::models::CallLogResponse500),
36    UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`delete_call_log`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum DeleteCallLogError {
43    Status403(crate::models::CallLogResponse403),
44    Status404(crate::models::CallLogResponse404),
45    Status410(crate::models::CallLogResponse410),
46    Status500(crate::models::CallLogResponse500),
47    UnknownValue(serde_json::Value),
48}
49
50/// struct for typed errors of method [`get_call_log`]
51#[derive(Debug, Clone, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum GetCallLogError {
54    Status404(crate::models::CallLogResponse404),
55    UnknownValue(serde_json::Value),
56}
57
58/// struct for typed errors of method [`get_user_call_logs`]
59#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum GetUserCallLogsError {
62    UnknownValue(serde_json::Value),
63}
64
65
66/// Adds a new call log.
67pub async fn add_call_log(configuration: &configuration::Configuration, add_call_log_request: Option<crate::models::AddCallLogRequest>) -> Result<crate::models::CallLogResponse200, Error<AddCallLogError>> {
68    let local_var_configuration = configuration;
69
70    let local_var_client = &local_var_configuration.client;
71
72    let local_var_uri_str = format!("{}/callLogs", local_var_configuration.base_path);
73    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
74
75    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
76        let local_var_key = local_var_apikey.key.clone();
77        let local_var_value = match local_var_apikey.prefix {
78            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
79            None => local_var_key,
80        };
81        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
82    }
83    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
84        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
85    }
86    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
87        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
88    };
89    local_var_req_builder = local_var_req_builder.json(&add_call_log_request);
90
91    let local_var_req = local_var_req_builder.build()?;
92    let local_var_resp = local_var_client.execute(local_var_req).await?;
93
94    let local_var_status = local_var_resp.status();
95    let local_var_content = local_var_resp.text().await?;
96
97    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
98        serde_json::from_str(&local_var_content).map_err(Error::from)
99    } else {
100        let local_var_entity: Option<AddCallLogError> = serde_json::from_str(&local_var_content).ok();
101        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
102        Err(Error::ResponseError(local_var_error))
103    }
104}
105
106/// Adds an audio recording to the call log. That audio can be played by those who have access to the call log object.
107pub async fn add_call_log_audio_file(configuration: &configuration::Configuration, id: &str, file: std::path::PathBuf) -> Result<crate::models::BaseResponse, Error<AddCallLogAudioFileError>> {
108    let local_var_configuration = configuration;
109
110    let local_var_client = &local_var_configuration.client;
111
112    let local_var_uri_str = format!("{}/callLogs/{id}/recordings", local_var_configuration.base_path, id=crate::apis::urlencode(id));
113    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
114
115    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
116        let local_var_key = local_var_apikey.key.clone();
117        let local_var_value = match local_var_apikey.prefix {
118            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
119            None => local_var_key,
120        };
121        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
122    }
123    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
124        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
125    }
126    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
127        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
128    };
129    let mut local_var_form = reqwest::multipart::Form::new();
130    // TODO: support file upload for 'file' parameter
131    local_var_req_builder = local_var_req_builder.multipart(local_var_form);
132
133    let local_var_req = local_var_req_builder.build()?;
134    let local_var_resp = local_var_client.execute(local_var_req).await?;
135
136    let local_var_status = local_var_resp.status();
137    let local_var_content = local_var_resp.text().await?;
138
139    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
140        serde_json::from_str(&local_var_content).map_err(Error::from)
141    } else {
142        let local_var_entity: Option<AddCallLogAudioFileError> = serde_json::from_str(&local_var_content).ok();
143        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
144        Err(Error::ResponseError(local_var_error))
145    }
146}
147
148/// Deletes a call log. If there is an audio recording attached to it, it will also be deleted. The related activity will not be removed by this request. If you want to remove the related activities, please use the endpoint which is specific for activities.
149pub async fn delete_call_log(configuration: &configuration::Configuration, id: &str) -> Result<crate::models::BaseResponse, Error<DeleteCallLogError>> {
150    let local_var_configuration = configuration;
151
152    let local_var_client = &local_var_configuration.client;
153
154    let local_var_uri_str = format!("{}/callLogs/{id}", local_var_configuration.base_path, id=crate::apis::urlencode(id));
155    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
156
157    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
158        let local_var_key = local_var_apikey.key.clone();
159        let local_var_value = match local_var_apikey.prefix {
160            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
161            None => local_var_key,
162        };
163        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
164    }
165    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
166        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
167    }
168    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
169        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
170    };
171
172    let local_var_req = local_var_req_builder.build()?;
173    let local_var_resp = local_var_client.execute(local_var_req).await?;
174
175    let local_var_status = local_var_resp.status();
176    let local_var_content = local_var_resp.text().await?;
177
178    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
179        serde_json::from_str(&local_var_content).map_err(Error::from)
180    } else {
181        let local_var_entity: Option<DeleteCallLogError> = serde_json::from_str(&local_var_content).ok();
182        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
183        Err(Error::ResponseError(local_var_error))
184    }
185}
186
187/// Returns details of a specific call log.
188pub async fn get_call_log(configuration: &configuration::Configuration, id: &str) -> Result<crate::models::CallLogResponse200, Error<GetCallLogError>> {
189    let local_var_configuration = configuration;
190
191    let local_var_client = &local_var_configuration.client;
192
193    let local_var_uri_str = format!("{}/callLogs/{id}", local_var_configuration.base_path, id=crate::apis::urlencode(id));
194    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
195
196    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
197        let local_var_key = local_var_apikey.key.clone();
198        let local_var_value = match local_var_apikey.prefix {
199            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
200            None => local_var_key,
201        };
202        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
203    }
204    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
205        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
206    }
207    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
208        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
209    };
210
211    let local_var_req = local_var_req_builder.build()?;
212    let local_var_resp = local_var_client.execute(local_var_req).await?;
213
214    let local_var_status = local_var_resp.status();
215    let local_var_content = local_var_resp.text().await?;
216
217    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
218        serde_json::from_str(&local_var_content).map_err(Error::from)
219    } else {
220        let local_var_entity: Option<GetCallLogError> = serde_json::from_str(&local_var_content).ok();
221        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
222        Err(Error::ResponseError(local_var_error))
223    }
224}
225
226/// Returns all call logs assigned to a particular user.
227pub async fn get_user_call_logs(configuration: &configuration::Configuration, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::CallLogsResponse, Error<GetUserCallLogsError>> {
228    let local_var_configuration = configuration;
229
230    let local_var_client = &local_var_configuration.client;
231
232    let local_var_uri_str = format!("{}/callLogs", local_var_configuration.base_path);
233    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
234
235    if let Some(ref local_var_str) = start {
236        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
237    }
238    if let Some(ref local_var_str) = limit {
239        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
240    }
241    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
242        let local_var_key = local_var_apikey.key.clone();
243        let local_var_value = match local_var_apikey.prefix {
244            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
245            None => local_var_key,
246        };
247        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
248    }
249    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
250        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
251    }
252    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
253        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
254    };
255
256    let local_var_req = local_var_req_builder.build()?;
257    let local_var_resp = local_var_client.execute(local_var_req).await?;
258
259    let local_var_status = local_var_resp.status();
260    let local_var_content = local_var_resp.text().await?;
261
262    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
263        serde_json::from_str(&local_var_content).map_err(Error::from)
264    } else {
265        let local_var_entity: Option<GetUserCallLogsError> = serde_json::from_str(&local_var_content).ok();
266        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
267        Err(Error::ResponseError(local_var_error))
268    }
269}
270