pipedrive_rs/apis/
deals_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_deal`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AddDealError {
22    UnknownValue(serde_json::Value),
23}
24
25/// struct for typed errors of method [`add_deal_follower`]
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(untagged)]
28pub enum AddDealFollowerError {
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`add_deal_participant`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum AddDealParticipantError {
36    UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`add_deal_product`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum AddDealProductError {
43    UnknownValue(serde_json::Value),
44}
45
46/// struct for typed errors of method [`delete_deal`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum DeleteDealError {
50    UnknownValue(serde_json::Value),
51}
52
53/// struct for typed errors of method [`delete_deal_follower`]
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(untagged)]
56pub enum DeleteDealFollowerError {
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`delete_deal_participant`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum DeleteDealParticipantError {
64    UnknownValue(serde_json::Value),
65}
66
67/// struct for typed errors of method [`delete_deal_product`]
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(untagged)]
70pub enum DeleteDealProductError {
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`delete_deals`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum DeleteDealsError {
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`duplicate_deal`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum DuplicateDealError {
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`get_deal`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum GetDealError {
92    UnknownValue(serde_json::Value),
93}
94
95/// struct for typed errors of method [`get_deal_activities`]
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(untagged)]
98pub enum GetDealActivitiesError {
99    UnknownValue(serde_json::Value),
100}
101
102/// struct for typed errors of method [`get_deal_files`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum GetDealFilesError {
106    UnknownValue(serde_json::Value),
107}
108
109/// struct for typed errors of method [`get_deal_followers`]
110#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(untagged)]
112pub enum GetDealFollowersError {
113    UnknownValue(serde_json::Value),
114}
115
116/// struct for typed errors of method [`get_deal_mail_messages`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum GetDealMailMessagesError {
120    UnknownValue(serde_json::Value),
121}
122
123/// struct for typed errors of method [`get_deal_participants`]
124#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(untagged)]
126pub enum GetDealParticipantsError {
127    UnknownValue(serde_json::Value),
128}
129
130/// struct for typed errors of method [`get_deal_persons`]
131#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(untagged)]
133pub enum GetDealPersonsError {
134    UnknownValue(serde_json::Value),
135}
136
137/// struct for typed errors of method [`get_deal_products`]
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum GetDealProductsError {
141    UnknownValue(serde_json::Value),
142}
143
144/// struct for typed errors of method [`get_deal_updates`]
145#[derive(Debug, Clone, Serialize, Deserialize)]
146#[serde(untagged)]
147pub enum GetDealUpdatesError {
148    UnknownValue(serde_json::Value),
149}
150
151/// struct for typed errors of method [`get_deal_users`]
152#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(untagged)]
154pub enum GetDealUsersError {
155    UnknownValue(serde_json::Value),
156}
157
158/// struct for typed errors of method [`get_deals`]
159#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(untagged)]
161pub enum GetDealsError {
162    UnknownValue(serde_json::Value),
163}
164
165/// struct for typed errors of method [`get_deals_collection`]
166#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(untagged)]
168pub enum GetDealsCollectionError {
169    Status403(crate::models::FailResponse),
170    UnknownValue(serde_json::Value),
171}
172
173/// struct for typed errors of method [`get_deals_summary`]
174#[derive(Debug, Clone, Serialize, Deserialize)]
175#[serde(untagged)]
176pub enum GetDealsSummaryError {
177    UnknownValue(serde_json::Value),
178}
179
180/// struct for typed errors of method [`get_deals_timeline`]
181#[derive(Debug, Clone, Serialize, Deserialize)]
182#[serde(untagged)]
183pub enum GetDealsTimelineError {
184    UnknownValue(serde_json::Value),
185}
186
187/// struct for typed errors of method [`merge_deals`]
188#[derive(Debug, Clone, Serialize, Deserialize)]
189#[serde(untagged)]
190pub enum MergeDealsError {
191    UnknownValue(serde_json::Value),
192}
193
194/// struct for typed errors of method [`search_deals`]
195#[derive(Debug, Clone, Serialize, Deserialize)]
196#[serde(untagged)]
197pub enum SearchDealsError {
198    UnknownValue(serde_json::Value),
199}
200
201/// struct for typed errors of method [`update_deal`]
202#[derive(Debug, Clone, Serialize, Deserialize)]
203#[serde(untagged)]
204pub enum UpdateDealError {
205    UnknownValue(serde_json::Value),
206}
207
208/// struct for typed errors of method [`update_deal_product`]
209#[derive(Debug, Clone, Serialize, Deserialize)]
210#[serde(untagged)]
211pub enum UpdateDealProductError {
212    UnknownValue(serde_json::Value),
213}
214
215
216/// Adds a new deal. Note that you can supply additional custom fields along with the request that are not described here. These custom fields are different for each Pipedrive account and can be recognized by long hashes as keys. To determine which custom fields exists, fetch the dealFields and look for `key` values. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/creating-a-deal\" target=\"_blank\" rel=\"noopener noreferrer\">adding a deal</a>.
217pub async fn add_deal(configuration: &configuration::Configuration, add_deal_request: Option<crate::models::AddDealRequest>) -> Result<crate::models::DealResponse200, Error<AddDealError>> {
218    let local_var_configuration = configuration;
219
220    let local_var_client = &local_var_configuration.client;
221
222    let local_var_uri_str = format!("{}/deals", local_var_configuration.base_path);
223    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
224
225    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
226        let local_var_key = local_var_apikey.key.clone();
227        let local_var_value = match local_var_apikey.prefix {
228            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
229            None => local_var_key,
230        };
231        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
232    }
233    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
234        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
235    }
236    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
237        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
238    };
239    local_var_req_builder = local_var_req_builder.json(&add_deal_request);
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<AddDealError> = 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/// Adds a follower to a deal.
257pub async fn add_deal_follower(configuration: &configuration::Configuration, id: i32, add_deal_follower_request: Option<crate::models::AddDealFollowerRequest>) -> Result<crate::models::AddDealFollowerResponse200, Error<AddDealFollowerError>> {
258    let local_var_configuration = configuration;
259
260    let local_var_client = &local_var_configuration.client;
261
262    let local_var_uri_str = format!("{}/deals/{id}/followers", local_var_configuration.base_path, id=id);
263    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, 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    local_var_req_builder = local_var_req_builder.json(&add_deal_follower_request);
280
281    let local_var_req = local_var_req_builder.build()?;
282    let local_var_resp = local_var_client.execute(local_var_req).await?;
283
284    let local_var_status = local_var_resp.status();
285    let local_var_content = local_var_resp.text().await?;
286
287    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
288        serde_json::from_str(&local_var_content).map_err(Error::from)
289    } else {
290        let local_var_entity: Option<AddDealFollowerError> = serde_json::from_str(&local_var_content).ok();
291        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
292        Err(Error::ResponseError(local_var_error))
293    }
294}
295
296/// Adds a participant to a deal.
297pub async fn add_deal_participant(configuration: &configuration::Configuration, id: i32, add_deal_participant_request: Option<crate::models::AddDealParticipantRequest>) -> Result<crate::models::AddDealParticipantResponse200, Error<AddDealParticipantError>> {
298    let local_var_configuration = configuration;
299
300    let local_var_client = &local_var_configuration.client;
301
302    let local_var_uri_str = format!("{}/deals/{id}/participants", local_var_configuration.base_path, id=id);
303    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
304
305    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
306        let local_var_key = local_var_apikey.key.clone();
307        let local_var_value = match local_var_apikey.prefix {
308            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
309            None => local_var_key,
310        };
311        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
312    }
313    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
314        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
315    }
316    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
317        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
318    };
319    local_var_req_builder = local_var_req_builder.json(&add_deal_participant_request);
320
321    let local_var_req = local_var_req_builder.build()?;
322    let local_var_resp = local_var_client.execute(local_var_req).await?;
323
324    let local_var_status = local_var_resp.status();
325    let local_var_content = local_var_resp.text().await?;
326
327    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
328        serde_json::from_str(&local_var_content).map_err(Error::from)
329    } else {
330        let local_var_entity: Option<AddDealParticipantError> = serde_json::from_str(&local_var_content).ok();
331        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
332        Err(Error::ResponseError(local_var_error))
333    }
334}
335
336/// Adds a product to a deal, creating a new item called a deal-product.
337pub async fn add_deal_product(configuration: &configuration::Configuration, id: i32, add_deal_product_request: Option<crate::models::AddDealProductRequest>) -> Result<crate::models::GetAddProductAttachementResponse200, Error<AddDealProductError>> {
338    let local_var_configuration = configuration;
339
340    let local_var_client = &local_var_configuration.client;
341
342    let local_var_uri_str = format!("{}/deals/{id}/products", local_var_configuration.base_path, id=id);
343    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
344
345    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
346        let local_var_key = local_var_apikey.key.clone();
347        let local_var_value = match local_var_apikey.prefix {
348            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
349            None => local_var_key,
350        };
351        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
352    }
353    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
354        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
355    }
356    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
357        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
358    };
359    local_var_req_builder = local_var_req_builder.json(&add_deal_product_request);
360
361    let local_var_req = local_var_req_builder.build()?;
362    let local_var_resp = local_var_client.execute(local_var_req).await?;
363
364    let local_var_status = local_var_resp.status();
365    let local_var_content = local_var_resp.text().await?;
366
367    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
368        serde_json::from_str(&local_var_content).map_err(Error::from)
369    } else {
370        let local_var_entity: Option<AddDealProductError> = serde_json::from_str(&local_var_content).ok();
371        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
372        Err(Error::ResponseError(local_var_error))
373    }
374}
375
376/// Marks a deal as deleted. After 30 days, the deal will be permanently deleted.
377pub async fn delete_deal(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::DeleteDealResponse200, Error<DeleteDealError>> {
378    let local_var_configuration = configuration;
379
380    let local_var_client = &local_var_configuration.client;
381
382    let local_var_uri_str = format!("{}/deals/{id}", local_var_configuration.base_path, id=id);
383    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
384
385    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
386        let local_var_key = local_var_apikey.key.clone();
387        let local_var_value = match local_var_apikey.prefix {
388            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
389            None => local_var_key,
390        };
391        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
392    }
393    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
394        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
395    }
396    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
397        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
398    };
399
400    let local_var_req = local_var_req_builder.build()?;
401    let local_var_resp = local_var_client.execute(local_var_req).await?;
402
403    let local_var_status = local_var_resp.status();
404    let local_var_content = local_var_resp.text().await?;
405
406    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
407        serde_json::from_str(&local_var_content).map_err(Error::from)
408    } else {
409        let local_var_entity: Option<DeleteDealError> = serde_json::from_str(&local_var_content).ok();
410        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
411        Err(Error::ResponseError(local_var_error))
412    }
413}
414
415/// Deletes a follower from a deal.
416pub async fn delete_deal_follower(configuration: &configuration::Configuration, id: i32, follower_id: i32) -> Result<crate::models::DeleteDealFollowerResponse200, Error<DeleteDealFollowerError>> {
417    let local_var_configuration = configuration;
418
419    let local_var_client = &local_var_configuration.client;
420
421    let local_var_uri_str = format!("{}/deals/{id}/followers/{follower_id}", local_var_configuration.base_path, id=id, follower_id=follower_id);
422    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
423
424    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
425        let local_var_key = local_var_apikey.key.clone();
426        let local_var_value = match local_var_apikey.prefix {
427            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
428            None => local_var_key,
429        };
430        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
431    }
432    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
433        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
434    }
435    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
436        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
437    };
438
439    let local_var_req = local_var_req_builder.build()?;
440    let local_var_resp = local_var_client.execute(local_var_req).await?;
441
442    let local_var_status = local_var_resp.status();
443    let local_var_content = local_var_resp.text().await?;
444
445    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
446        serde_json::from_str(&local_var_content).map_err(Error::from)
447    } else {
448        let local_var_entity: Option<DeleteDealFollowerError> = serde_json::from_str(&local_var_content).ok();
449        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
450        Err(Error::ResponseError(local_var_error))
451    }
452}
453
454/// Deletes a participant from a deal.
455pub async fn delete_deal_participant(configuration: &configuration::Configuration, id: i32, deal_participant_id: i32) -> Result<crate::models::DeleteDealParticipantResponse200, Error<DeleteDealParticipantError>> {
456    let local_var_configuration = configuration;
457
458    let local_var_client = &local_var_configuration.client;
459
460    let local_var_uri_str = format!("{}/deals/{id}/participants/{deal_participant_id}", local_var_configuration.base_path, id=id, deal_participant_id=deal_participant_id);
461    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
462
463    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
464        let local_var_key = local_var_apikey.key.clone();
465        let local_var_value = match local_var_apikey.prefix {
466            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
467            None => local_var_key,
468        };
469        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
470    }
471    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
472        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
473    }
474    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
475        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
476    };
477
478    let local_var_req = local_var_req_builder.build()?;
479    let local_var_resp = local_var_client.execute(local_var_req).await?;
480
481    let local_var_status = local_var_resp.status();
482    let local_var_content = local_var_resp.text().await?;
483
484    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
485        serde_json::from_str(&local_var_content).map_err(Error::from)
486    } else {
487        let local_var_entity: Option<DeleteDealParticipantError> = serde_json::from_str(&local_var_content).ok();
488        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
489        Err(Error::ResponseError(local_var_error))
490    }
491}
492
493/// Deletes a product attachment from a deal, using the `product_attachment_id`.
494pub async fn delete_deal_product(configuration: &configuration::Configuration, id: i32, product_attachment_id: i32) -> Result<crate::models::DeleteDealProductResponse200, Error<DeleteDealProductError>> {
495    let local_var_configuration = configuration;
496
497    let local_var_client = &local_var_configuration.client;
498
499    let local_var_uri_str = format!("{}/deals/{id}/products/{product_attachment_id}", local_var_configuration.base_path, id=id, product_attachment_id=product_attachment_id);
500    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
501
502    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
503        let local_var_key = local_var_apikey.key.clone();
504        let local_var_value = match local_var_apikey.prefix {
505            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
506            None => local_var_key,
507        };
508        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
509    }
510    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
511        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
512    }
513    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
514        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
515    };
516
517    let local_var_req = local_var_req_builder.build()?;
518    let local_var_resp = local_var_client.execute(local_var_req).await?;
519
520    let local_var_status = local_var_resp.status();
521    let local_var_content = local_var_resp.text().await?;
522
523    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
524        serde_json::from_str(&local_var_content).map_err(Error::from)
525    } else {
526        let local_var_entity: Option<DeleteDealProductError> = serde_json::from_str(&local_var_content).ok();
527        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
528        Err(Error::ResponseError(local_var_error))
529    }
530}
531
532/// Marks multiple deals as deleted. After 30 days, the deals will be permanently deleted.
533pub async fn delete_deals(configuration: &configuration::Configuration, ids: &str) -> Result<crate::models::DeleteDealsResponse200, Error<DeleteDealsError>> {
534    let local_var_configuration = configuration;
535
536    let local_var_client = &local_var_configuration.client;
537
538    let local_var_uri_str = format!("{}/deals", local_var_configuration.base_path);
539    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
540
541    local_var_req_builder = local_var_req_builder.query(&[("ids", &ids.to_string())]);
542    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
543        let local_var_key = local_var_apikey.key.clone();
544        let local_var_value = match local_var_apikey.prefix {
545            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
546            None => local_var_key,
547        };
548        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
549    }
550    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
551        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
552    }
553    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
554        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
555    };
556
557    let local_var_req = local_var_req_builder.build()?;
558    let local_var_resp = local_var_client.execute(local_var_req).await?;
559
560    let local_var_status = local_var_resp.status();
561    let local_var_content = local_var_resp.text().await?;
562
563    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
564        serde_json::from_str(&local_var_content).map_err(Error::from)
565    } else {
566        let local_var_entity: Option<DeleteDealsError> = serde_json::from_str(&local_var_content).ok();
567        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
568        Err(Error::ResponseError(local_var_error))
569    }
570}
571
572/// Duplicates a deal.
573pub async fn duplicate_deal(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::DuplicateDealResponse200, Error<DuplicateDealError>> {
574    let local_var_configuration = configuration;
575
576    let local_var_client = &local_var_configuration.client;
577
578    let local_var_uri_str = format!("{}/deals/{id}/duplicate", local_var_configuration.base_path, id=id);
579    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
580
581    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
582        let local_var_key = local_var_apikey.key.clone();
583        let local_var_value = match local_var_apikey.prefix {
584            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
585            None => local_var_key,
586        };
587        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
588    }
589    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
590        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
591    }
592    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
593        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
594    };
595
596    let local_var_req = local_var_req_builder.build()?;
597    let local_var_resp = local_var_client.execute(local_var_req).await?;
598
599    let local_var_status = local_var_resp.status();
600    let local_var_content = local_var_resp.text().await?;
601
602    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
603        serde_json::from_str(&local_var_content).map_err(Error::from)
604    } else {
605        let local_var_entity: Option<DuplicateDealError> = serde_json::from_str(&local_var_content).ok();
606        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
607        Err(Error::ResponseError(local_var_error))
608    }
609}
610
611/// Returns the details of a specific deal. Note that this also returns some additional fields which are not present when asking for all deals – such as deal age and stay in pipeline stages. Also note that custom fields appear as long hashes in the resulting data. These hashes can be mapped against the `key` value of dealFields. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/getting-details-of-a-deal\" target=\"_blank\" rel=\"noopener noreferrer\">getting details of a deal</a>.
612pub async fn get_deal(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::GetDealResponse200, Error<GetDealError>> {
613    let local_var_configuration = configuration;
614
615    let local_var_client = &local_var_configuration.client;
616
617    let local_var_uri_str = format!("{}/deals/{id}", local_var_configuration.base_path, id=id);
618    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
619
620    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
621        let local_var_key = local_var_apikey.key.clone();
622        let local_var_value = match local_var_apikey.prefix {
623            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
624            None => local_var_key,
625        };
626        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
627    }
628    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
629        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
630    }
631    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
632        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
633    };
634
635    let local_var_req = local_var_req_builder.build()?;
636    let local_var_resp = local_var_client.execute(local_var_req).await?;
637
638    let local_var_status = local_var_resp.status();
639    let local_var_content = local_var_resp.text().await?;
640
641    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
642        serde_json::from_str(&local_var_content).map_err(Error::from)
643    } else {
644        let local_var_entity: Option<GetDealError> = serde_json::from_str(&local_var_content).ok();
645        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
646        Err(Error::ResponseError(local_var_error))
647    }
648}
649
650/// Lists activities associated with a deal.
651pub async fn get_deal_activities(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, done: Option<f32>, exclude: Option<&str>) -> Result<crate::models::GetDealActivitiesResponse200, Error<GetDealActivitiesError>> {
652    let local_var_configuration = configuration;
653
654    let local_var_client = &local_var_configuration.client;
655
656    let local_var_uri_str = format!("{}/deals/{id}/activities", local_var_configuration.base_path, id=id);
657    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
658
659    if let Some(ref local_var_str) = start {
660        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
661    }
662    if let Some(ref local_var_str) = limit {
663        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
664    }
665    if let Some(ref local_var_str) = done {
666        local_var_req_builder = local_var_req_builder.query(&[("done", &local_var_str.to_string())]);
667    }
668    if let Some(ref local_var_str) = exclude {
669        local_var_req_builder = local_var_req_builder.query(&[("exclude", &local_var_str.to_string())]);
670    }
671    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
672        let local_var_key = local_var_apikey.key.clone();
673        let local_var_value = match local_var_apikey.prefix {
674            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
675            None => local_var_key,
676        };
677        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
678    }
679    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
680        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
681    }
682    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
683        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
684    };
685
686    let local_var_req = local_var_req_builder.build()?;
687    let local_var_resp = local_var_client.execute(local_var_req).await?;
688
689    let local_var_status = local_var_resp.status();
690    let local_var_content = local_var_resp.text().await?;
691
692    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
693        serde_json::from_str(&local_var_content).map_err(Error::from)
694    } else {
695        let local_var_entity: Option<GetDealActivitiesError> = serde_json::from_str(&local_var_content).ok();
696        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
697        Err(Error::ResponseError(local_var_error))
698    }
699}
700
701/// Lists files associated with a deal.
702pub async fn get_deal_files(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, sort: Option<&str>) -> Result<crate::models::GetAssociatedFilesResponse200, Error<GetDealFilesError>> {
703    let local_var_configuration = configuration;
704
705    let local_var_client = &local_var_configuration.client;
706
707    let local_var_uri_str = format!("{}/deals/{id}/files", local_var_configuration.base_path, id=id);
708    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
709
710    if let Some(ref local_var_str) = start {
711        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
712    }
713    if let Some(ref local_var_str) = limit {
714        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
715    }
716    if let Some(ref local_var_str) = sort {
717        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
718    }
719    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
720        let local_var_key = local_var_apikey.key.clone();
721        let local_var_value = match local_var_apikey.prefix {
722            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
723            None => local_var_key,
724        };
725        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
726    }
727    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
728        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
729    }
730    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
731        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
732    };
733
734    let local_var_req = local_var_req_builder.build()?;
735    let local_var_resp = local_var_client.execute(local_var_req).await?;
736
737    let local_var_status = local_var_resp.status();
738    let local_var_content = local_var_resp.text().await?;
739
740    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
741        serde_json::from_str(&local_var_content).map_err(Error::from)
742    } else {
743        let local_var_entity: Option<GetDealFilesError> = serde_json::from_str(&local_var_content).ok();
744        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
745        Err(Error::ResponseError(local_var_error))
746    }
747}
748
749/// Lists the followers of a deal.
750pub async fn get_deal_followers(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::GetAssociatedFollowersResponse200, Error<GetDealFollowersError>> {
751    let local_var_configuration = configuration;
752
753    let local_var_client = &local_var_configuration.client;
754
755    let local_var_uri_str = format!("{}/deals/{id}/followers", local_var_configuration.base_path, id=id);
756    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
757
758    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
759        let local_var_key = local_var_apikey.key.clone();
760        let local_var_value = match local_var_apikey.prefix {
761            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
762            None => local_var_key,
763        };
764        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
765    }
766    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
767        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
768    }
769    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
770        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
771    };
772
773    let local_var_req = local_var_req_builder.build()?;
774    let local_var_resp = local_var_client.execute(local_var_req).await?;
775
776    let local_var_status = local_var_resp.status();
777    let local_var_content = local_var_resp.text().await?;
778
779    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
780        serde_json::from_str(&local_var_content).map_err(Error::from)
781    } else {
782        let local_var_entity: Option<GetDealFollowersError> = serde_json::from_str(&local_var_content).ok();
783        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
784        Err(Error::ResponseError(local_var_error))
785    }
786}
787
788/// Lists mail messages associated with a deal.
789pub async fn get_deal_mail_messages(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetAssociatedMailMessagesResponse200, Error<GetDealMailMessagesError>> {
790    let local_var_configuration = configuration;
791
792    let local_var_client = &local_var_configuration.client;
793
794    let local_var_uri_str = format!("{}/deals/{id}/mailMessages", local_var_configuration.base_path, id=id);
795    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
796
797    if let Some(ref local_var_str) = start {
798        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
799    }
800    if let Some(ref local_var_str) = limit {
801        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
802    }
803    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
804        let local_var_key = local_var_apikey.key.clone();
805        let local_var_value = match local_var_apikey.prefix {
806            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
807            None => local_var_key,
808        };
809        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
810    }
811    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
812        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
813    }
814    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
815        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
816    };
817
818    let local_var_req = local_var_req_builder.build()?;
819    let local_var_resp = local_var_client.execute(local_var_req).await?;
820
821    let local_var_status = local_var_resp.status();
822    let local_var_content = local_var_resp.text().await?;
823
824    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
825        serde_json::from_str(&local_var_content).map_err(Error::from)
826    } else {
827        let local_var_entity: Option<GetDealMailMessagesError> = serde_json::from_str(&local_var_content).ok();
828        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
829        Err(Error::ResponseError(local_var_error))
830    }
831}
832
833/// Lists the participants associated with a deal.<br>If a company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also return the `data.marketing_status` field.
834pub async fn get_deal_participants(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetDealParticipantsResponse200, Error<GetDealParticipantsError>> {
835    let local_var_configuration = configuration;
836
837    let local_var_client = &local_var_configuration.client;
838
839    let local_var_uri_str = format!("{}/deals/{id}/participants", local_var_configuration.base_path, id=id);
840    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
841
842    if let Some(ref local_var_str) = start {
843        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
844    }
845    if let Some(ref local_var_str) = limit {
846        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
847    }
848    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
849        let local_var_key = local_var_apikey.key.clone();
850        let local_var_value = match local_var_apikey.prefix {
851            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
852            None => local_var_key,
853        };
854        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
855    }
856    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
857        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
858    }
859    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
860        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
861    };
862
863    let local_var_req = local_var_req_builder.build()?;
864    let local_var_resp = local_var_client.execute(local_var_req).await?;
865
866    let local_var_status = local_var_resp.status();
867    let local_var_content = local_var_resp.text().await?;
868
869    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
870        serde_json::from_str(&local_var_content).map_err(Error::from)
871    } else {
872        let local_var_entity: Option<GetDealParticipantsError> = serde_json::from_str(&local_var_content).ok();
873        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
874        Err(Error::ResponseError(local_var_error))
875    }
876}
877
878/// Lists all persons associated with a deal, regardless of whether the person is the primary contact of the deal, or added as a participant.<br>If a company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also return the `data.marketing_status` field.
879pub async fn get_deal_persons(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::ListPersonsResponse200, Error<GetDealPersonsError>> {
880    let local_var_configuration = configuration;
881
882    let local_var_client = &local_var_configuration.client;
883
884    let local_var_uri_str = format!("{}/deals/{id}/persons", local_var_configuration.base_path, id=id);
885    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
886
887    if let Some(ref local_var_str) = start {
888        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
889    }
890    if let Some(ref local_var_str) = limit {
891        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
892    }
893    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
894        let local_var_key = local_var_apikey.key.clone();
895        let local_var_value = match local_var_apikey.prefix {
896            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
897            None => local_var_key,
898        };
899        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
900    }
901    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
902        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
903    }
904    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
905        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
906    };
907
908    let local_var_req = local_var_req_builder.build()?;
909    let local_var_resp = local_var_client.execute(local_var_req).await?;
910
911    let local_var_status = local_var_resp.status();
912    let local_var_content = local_var_resp.text().await?;
913
914    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
915        serde_json::from_str(&local_var_content).map_err(Error::from)
916    } else {
917        let local_var_entity: Option<GetDealPersonsError> = serde_json::from_str(&local_var_content).ok();
918        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
919        Err(Error::ResponseError(local_var_error))
920    }
921}
922
923/// Lists products attached to a deal.
924pub async fn get_deal_products(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, include_product_data: Option<f32>) -> Result<crate::models::ListProductsResponse200, Error<GetDealProductsError>> {
925    let local_var_configuration = configuration;
926
927    let local_var_client = &local_var_configuration.client;
928
929    let local_var_uri_str = format!("{}/deals/{id}/products", local_var_configuration.base_path, id=id);
930    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
931
932    if let Some(ref local_var_str) = start {
933        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
934    }
935    if let Some(ref local_var_str) = limit {
936        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
937    }
938    if let Some(ref local_var_str) = include_product_data {
939        local_var_req_builder = local_var_req_builder.query(&[("include_product_data", &local_var_str.to_string())]);
940    }
941    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
942        let local_var_key = local_var_apikey.key.clone();
943        let local_var_value = match local_var_apikey.prefix {
944            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
945            None => local_var_key,
946        };
947        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
948    }
949    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
950        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
951    }
952    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
953        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
954    };
955
956    let local_var_req = local_var_req_builder.build()?;
957    let local_var_resp = local_var_client.execute(local_var_req).await?;
958
959    let local_var_status = local_var_resp.status();
960    let local_var_content = local_var_resp.text().await?;
961
962    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
963        serde_json::from_str(&local_var_content).map_err(Error::from)
964    } else {
965        let local_var_entity: Option<GetDealProductsError> = serde_json::from_str(&local_var_content).ok();
966        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
967        Err(Error::ResponseError(local_var_error))
968    }
969}
970
971/// Lists updates about a deal.
972pub async fn get_deal_updates(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, all_changes: Option<&str>, items: Option<&str>) -> Result<crate::models::GetDealUpdatesResponse200, Error<GetDealUpdatesError>> {
973    let local_var_configuration = configuration;
974
975    let local_var_client = &local_var_configuration.client;
976
977    let local_var_uri_str = format!("{}/deals/{id}/flow", local_var_configuration.base_path, id=id);
978    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
979
980    if let Some(ref local_var_str) = start {
981        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
982    }
983    if let Some(ref local_var_str) = limit {
984        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
985    }
986    if let Some(ref local_var_str) = all_changes {
987        local_var_req_builder = local_var_req_builder.query(&[("all_changes", &local_var_str.to_string())]);
988    }
989    if let Some(ref local_var_str) = items {
990        local_var_req_builder = local_var_req_builder.query(&[("items", &local_var_str.to_string())]);
991    }
992    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
993        let local_var_key = local_var_apikey.key.clone();
994        let local_var_value = match local_var_apikey.prefix {
995            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
996            None => local_var_key,
997        };
998        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
999    }
1000    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1001        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1002    }
1003    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1004        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1005    };
1006
1007    let local_var_req = local_var_req_builder.build()?;
1008    let local_var_resp = local_var_client.execute(local_var_req).await?;
1009
1010    let local_var_status = local_var_resp.status();
1011    let local_var_content = local_var_resp.text().await?;
1012
1013    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1014        serde_json::from_str(&local_var_content).map_err(Error::from)
1015    } else {
1016        let local_var_entity: Option<GetDealUpdatesError> = serde_json::from_str(&local_var_content).ok();
1017        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1018        Err(Error::ResponseError(local_var_error))
1019    }
1020}
1021
1022/// Lists the users permitted to access a deal.
1023pub async fn get_deal_users(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::ListPermittedUsersResponse200, Error<GetDealUsersError>> {
1024    let local_var_configuration = configuration;
1025
1026    let local_var_client = &local_var_configuration.client;
1027
1028    let local_var_uri_str = format!("{}/deals/{id}/permittedUsers", local_var_configuration.base_path, id=id);
1029    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1030
1031    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1032        let local_var_key = local_var_apikey.key.clone();
1033        let local_var_value = match local_var_apikey.prefix {
1034            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1035            None => local_var_key,
1036        };
1037        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1038    }
1039    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1040        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1041    }
1042
1043    let local_var_req = local_var_req_builder.build()?;
1044    let local_var_resp = local_var_client.execute(local_var_req).await?;
1045
1046    let local_var_status = local_var_resp.status();
1047    let local_var_content = local_var_resp.text().await?;
1048
1049    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1050        serde_json::from_str(&local_var_content).map_err(Error::from)
1051    } else {
1052        let local_var_entity: Option<GetDealUsersError> = serde_json::from_str(&local_var_content).ok();
1053        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1054        Err(Error::ResponseError(local_var_error))
1055    }
1056}
1057
1058/// Returns all deals. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/getting-all-deals\" target=\"_blank\" rel=\"noopener noreferrer\">getting all deals</a>.
1059pub async fn get_deals(configuration: &configuration::Configuration, user_id: Option<i32>, filter_id: Option<i32>, stage_id: Option<i32>, status: Option<&str>, start: Option<i32>, limit: Option<i32>, sort: Option<&str>, owned_by_you: Option<f32>) -> Result<crate::models::GetDealsResponse200, Error<GetDealsError>> {
1060    let local_var_configuration = configuration;
1061
1062    let local_var_client = &local_var_configuration.client;
1063
1064    let local_var_uri_str = format!("{}/deals", local_var_configuration.base_path);
1065    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1066
1067    if let Some(ref local_var_str) = user_id {
1068        local_var_req_builder = local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
1069    }
1070    if let Some(ref local_var_str) = filter_id {
1071        local_var_req_builder = local_var_req_builder.query(&[("filter_id", &local_var_str.to_string())]);
1072    }
1073    if let Some(ref local_var_str) = stage_id {
1074        local_var_req_builder = local_var_req_builder.query(&[("stage_id", &local_var_str.to_string())]);
1075    }
1076    if let Some(ref local_var_str) = status {
1077        local_var_req_builder = local_var_req_builder.query(&[("status", &local_var_str.to_string())]);
1078    }
1079    if let Some(ref local_var_str) = start {
1080        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
1081    }
1082    if let Some(ref local_var_str) = limit {
1083        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
1084    }
1085    if let Some(ref local_var_str) = sort {
1086        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
1087    }
1088    if let Some(ref local_var_str) = owned_by_you {
1089        local_var_req_builder = local_var_req_builder.query(&[("owned_by_you", &local_var_str.to_string())]);
1090    }
1091    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1092        let local_var_key = local_var_apikey.key.clone();
1093        let local_var_value = match local_var_apikey.prefix {
1094            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1095            None => local_var_key,
1096        };
1097        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1098    }
1099    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1100        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1101    }
1102    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1103        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1104    };
1105
1106    let local_var_req = local_var_req_builder.build()?;
1107    let local_var_resp = local_var_client.execute(local_var_req).await?;
1108
1109    let local_var_status = local_var_resp.status();
1110    let local_var_content = local_var_resp.text().await?;
1111
1112    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1113        serde_json::from_str(&local_var_content).map_err(Error::from)
1114    } else {
1115        let local_var_entity: Option<GetDealsError> = serde_json::from_str(&local_var_content).ok();
1116        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1117        Err(Error::ResponseError(local_var_error))
1118    }
1119}
1120
1121/// Returns all deals. This is a cursor-paginated endpoint that is currently in BETA. For more information, please refer to our documentation on <a href=\"https://pipedrive.readme.io/docs/core-api-concepts-pagination\" target=\"_blank\" rel=\"noopener noreferrer\">pagination</a>. Please note that only global admins (those with global permissions) can access these endpoints. Users with regular permissions will receive a 403 response. Read more about global permissions <a href=\"https://support.pipedrive.com/en/article/global-user-management\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>.
1122pub async fn get_deals_collection(configuration: &configuration::Configuration, cursor: Option<&str>, limit: Option<i32>, since: Option<&str>, until: Option<&str>, user_id: Option<i32>, stage_id: Option<i32>, status: Option<&str>) -> Result<crate::models::GetDealsCollectionResponse200, Error<GetDealsCollectionError>> {
1123    let local_var_configuration = configuration;
1124
1125    let local_var_client = &local_var_configuration.client;
1126
1127    let local_var_uri_str = format!("{}/deals/collection", local_var_configuration.base_path);
1128    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1129
1130    if let Some(ref local_var_str) = cursor {
1131        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
1132    }
1133    if let Some(ref local_var_str) = limit {
1134        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
1135    }
1136    if let Some(ref local_var_str) = since {
1137        local_var_req_builder = local_var_req_builder.query(&[("since", &local_var_str.to_string())]);
1138    }
1139    if let Some(ref local_var_str) = until {
1140        local_var_req_builder = local_var_req_builder.query(&[("until", &local_var_str.to_string())]);
1141    }
1142    if let Some(ref local_var_str) = user_id {
1143        local_var_req_builder = local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
1144    }
1145    if let Some(ref local_var_str) = stage_id {
1146        local_var_req_builder = local_var_req_builder.query(&[("stage_id", &local_var_str.to_string())]);
1147    }
1148    if let Some(ref local_var_str) = status {
1149        local_var_req_builder = local_var_req_builder.query(&[("status", &local_var_str.to_string())]);
1150    }
1151    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1152        let local_var_key = local_var_apikey.key.clone();
1153        let local_var_value = match local_var_apikey.prefix {
1154            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1155            None => local_var_key,
1156        };
1157        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1158    }
1159    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1160        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1161    }
1162    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1163        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1164    };
1165
1166    let local_var_req = local_var_req_builder.build()?;
1167    let local_var_resp = local_var_client.execute(local_var_req).await?;
1168
1169    let local_var_status = local_var_resp.status();
1170    let local_var_content = local_var_resp.text().await?;
1171
1172    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1173        serde_json::from_str(&local_var_content).map_err(Error::from)
1174    } else {
1175        let local_var_entity: Option<GetDealsCollectionError> = serde_json::from_str(&local_var_content).ok();
1176        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1177        Err(Error::ResponseError(local_var_error))
1178    }
1179}
1180
1181/// Returns a summary of all the deals.
1182pub async fn get_deals_summary(configuration: &configuration::Configuration, status: Option<&str>, filter_id: Option<i32>, user_id: Option<i32>, stage_id: Option<i32>) -> Result<crate::models::GetDealsSummaryResponse200, Error<GetDealsSummaryError>> {
1183    let local_var_configuration = configuration;
1184
1185    let local_var_client = &local_var_configuration.client;
1186
1187    let local_var_uri_str = format!("{}/deals/summary", local_var_configuration.base_path);
1188    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1189
1190    if let Some(ref local_var_str) = status {
1191        local_var_req_builder = local_var_req_builder.query(&[("status", &local_var_str.to_string())]);
1192    }
1193    if let Some(ref local_var_str) = filter_id {
1194        local_var_req_builder = local_var_req_builder.query(&[("filter_id", &local_var_str.to_string())]);
1195    }
1196    if let Some(ref local_var_str) = user_id {
1197        local_var_req_builder = local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
1198    }
1199    if let Some(ref local_var_str) = stage_id {
1200        local_var_req_builder = local_var_req_builder.query(&[("stage_id", &local_var_str.to_string())]);
1201    }
1202    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1203        let local_var_key = local_var_apikey.key.clone();
1204        let local_var_value = match local_var_apikey.prefix {
1205            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1206            None => local_var_key,
1207        };
1208        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1209    }
1210    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1211        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1212    }
1213    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1214        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1215    };
1216
1217    let local_var_req = local_var_req_builder.build()?;
1218    let local_var_resp = local_var_client.execute(local_var_req).await?;
1219
1220    let local_var_status = local_var_resp.status();
1221    let local_var_content = local_var_resp.text().await?;
1222
1223    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1224        serde_json::from_str(&local_var_content).map_err(Error::from)
1225    } else {
1226        let local_var_entity: Option<GetDealsSummaryError> = serde_json::from_str(&local_var_content).ok();
1227        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1228        Err(Error::ResponseError(local_var_error))
1229    }
1230}
1231
1232/// Returns open and won deals, grouped by a defined interval of time set in a date-type dealField (`field_key`) — e.g. when month is the chosen interval, and 3 months are asked starting from January 1st, 2012, deals are returned grouped into 3 groups — January, February and March — based on the value of the given `field_key`.
1233pub async fn get_deals_timeline(configuration: &configuration::Configuration, start_date: String, interval: &str, amount: i32, field_key: &str, user_id: Option<i32>, pipeline_id: Option<i32>, filter_id: Option<i32>, exclude_deals: Option<f32>, totals_convert_currency: Option<&str>) -> Result<crate::models::GetDealsTimelineResponse200, Error<GetDealsTimelineError>> {
1234    let local_var_configuration = configuration;
1235
1236    let local_var_client = &local_var_configuration.client;
1237
1238    let local_var_uri_str = format!("{}/deals/timeline", local_var_configuration.base_path);
1239    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1240
1241    local_var_req_builder = local_var_req_builder.query(&[("start_date", &start_date.to_string())]);
1242    local_var_req_builder = local_var_req_builder.query(&[("interval", &interval.to_string())]);
1243    local_var_req_builder = local_var_req_builder.query(&[("amount", &amount.to_string())]);
1244    local_var_req_builder = local_var_req_builder.query(&[("field_key", &field_key.to_string())]);
1245    if let Some(ref local_var_str) = user_id {
1246        local_var_req_builder = local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
1247    }
1248    if let Some(ref local_var_str) = pipeline_id {
1249        local_var_req_builder = local_var_req_builder.query(&[("pipeline_id", &local_var_str.to_string())]);
1250    }
1251    if let Some(ref local_var_str) = filter_id {
1252        local_var_req_builder = local_var_req_builder.query(&[("filter_id", &local_var_str.to_string())]);
1253    }
1254    if let Some(ref local_var_str) = exclude_deals {
1255        local_var_req_builder = local_var_req_builder.query(&[("exclude_deals", &local_var_str.to_string())]);
1256    }
1257    if let Some(ref local_var_str) = totals_convert_currency {
1258        local_var_req_builder = local_var_req_builder.query(&[("totals_convert_currency", &local_var_str.to_string())]);
1259    }
1260    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1261        let local_var_key = local_var_apikey.key.clone();
1262        let local_var_value = match local_var_apikey.prefix {
1263            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1264            None => local_var_key,
1265        };
1266        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1267    }
1268    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1269        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1270    }
1271    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1272        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1273    };
1274
1275    let local_var_req = local_var_req_builder.build()?;
1276    let local_var_resp = local_var_client.execute(local_var_req).await?;
1277
1278    let local_var_status = local_var_resp.status();
1279    let local_var_content = local_var_resp.text().await?;
1280
1281    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1282        serde_json::from_str(&local_var_content).map_err(Error::from)
1283    } else {
1284        let local_var_entity: Option<GetDealsTimelineError> = serde_json::from_str(&local_var_content).ok();
1285        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1286        Err(Error::ResponseError(local_var_error))
1287    }
1288}
1289
1290/// Merges a deal with another deal. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/merging-two-deals\" target=\"_blank\" rel=\"noopener noreferrer\">merging two deals</a>.
1291pub async fn merge_deals(configuration: &configuration::Configuration, id: i32, merge_deals_request: Option<crate::models::MergeDealsRequest>) -> Result<crate::models::MergeDealsResponse200, Error<MergeDealsError>> {
1292    let local_var_configuration = configuration;
1293
1294    let local_var_client = &local_var_configuration.client;
1295
1296    let local_var_uri_str = format!("{}/deals/{id}/merge", local_var_configuration.base_path, id=id);
1297    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1298
1299    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1300        let local_var_key = local_var_apikey.key.clone();
1301        let local_var_value = match local_var_apikey.prefix {
1302            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1303            None => local_var_key,
1304        };
1305        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1306    }
1307    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1308        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1309    }
1310    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1311        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1312    };
1313    local_var_req_builder = local_var_req_builder.json(&merge_deals_request);
1314
1315    let local_var_req = local_var_req_builder.build()?;
1316    let local_var_resp = local_var_client.execute(local_var_req).await?;
1317
1318    let local_var_status = local_var_resp.status();
1319    let local_var_content = local_var_resp.text().await?;
1320
1321    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1322        serde_json::from_str(&local_var_content).map_err(Error::from)
1323    } else {
1324        let local_var_entity: Option<MergeDealsError> = serde_json::from_str(&local_var_content).ok();
1325        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1326        Err(Error::ResponseError(local_var_error))
1327    }
1328}
1329
1330/// Searches all deals by title, notes and/or custom fields. This endpoint is a wrapper of <a href=\"https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem\">/v1/itemSearch</a> with a narrower OAuth scope. Found deals can be filtered by the person ID and the organization ID.
1331pub async fn search_deals(configuration: &configuration::Configuration, term: &str, fields: Option<&str>, exact_match: Option<bool>, person_id: Option<i32>, organization_id: Option<i32>, status: Option<&str>, include_fields: Option<&str>, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::SearchDealsResponse200, Error<SearchDealsError>> {
1332    let local_var_configuration = configuration;
1333
1334    let local_var_client = &local_var_configuration.client;
1335
1336    let local_var_uri_str = format!("{}/deals/search", local_var_configuration.base_path);
1337    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1338
1339    local_var_req_builder = local_var_req_builder.query(&[("term", &term.to_string())]);
1340    if let Some(ref local_var_str) = fields {
1341        local_var_req_builder = local_var_req_builder.query(&[("fields", &local_var_str.to_string())]);
1342    }
1343    if let Some(ref local_var_str) = exact_match {
1344        local_var_req_builder = local_var_req_builder.query(&[("exact_match", &local_var_str.to_string())]);
1345    }
1346    if let Some(ref local_var_str) = person_id {
1347        local_var_req_builder = local_var_req_builder.query(&[("person_id", &local_var_str.to_string())]);
1348    }
1349    if let Some(ref local_var_str) = organization_id {
1350        local_var_req_builder = local_var_req_builder.query(&[("organization_id", &local_var_str.to_string())]);
1351    }
1352    if let Some(ref local_var_str) = status {
1353        local_var_req_builder = local_var_req_builder.query(&[("status", &local_var_str.to_string())]);
1354    }
1355    if let Some(ref local_var_str) = include_fields {
1356        local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
1357    }
1358    if let Some(ref local_var_str) = start {
1359        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
1360    }
1361    if let Some(ref local_var_str) = limit {
1362        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
1363    }
1364    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1365        let local_var_key = local_var_apikey.key.clone();
1366        let local_var_value = match local_var_apikey.prefix {
1367            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1368            None => local_var_key,
1369        };
1370        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1371    }
1372    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1373        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1374    }
1375    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1376        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1377    };
1378
1379    let local_var_req = local_var_req_builder.build()?;
1380    let local_var_resp = local_var_client.execute(local_var_req).await?;
1381
1382    let local_var_status = local_var_resp.status();
1383    let local_var_content = local_var_resp.text().await?;
1384
1385    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1386        serde_json::from_str(&local_var_content).map_err(Error::from)
1387    } else {
1388        let local_var_entity: Option<SearchDealsError> = serde_json::from_str(&local_var_content).ok();
1389        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1390        Err(Error::ResponseError(local_var_error))
1391    }
1392}
1393
1394/// Updates the properties of a deal. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/updating-a-deal\" target=\"_blank\" rel=\"noopener noreferrer\">updating a deal</a>.
1395pub async fn update_deal(configuration: &configuration::Configuration, id: i32, update_deal_request: Option<crate::models::UpdateDealRequest>) -> Result<crate::models::DealResponse200, Error<UpdateDealError>> {
1396    let local_var_configuration = configuration;
1397
1398    let local_var_client = &local_var_configuration.client;
1399
1400    let local_var_uri_str = format!("{}/deals/{id}", local_var_configuration.base_path, id=id);
1401    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1402
1403    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1404        let local_var_key = local_var_apikey.key.clone();
1405        let local_var_value = match local_var_apikey.prefix {
1406            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1407            None => local_var_key,
1408        };
1409        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1410    }
1411    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1412        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1413    }
1414    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1415        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1416    };
1417    local_var_req_builder = local_var_req_builder.json(&update_deal_request);
1418
1419    let local_var_req = local_var_req_builder.build()?;
1420    let local_var_resp = local_var_client.execute(local_var_req).await?;
1421
1422    let local_var_status = local_var_resp.status();
1423    let local_var_content = local_var_resp.text().await?;
1424
1425    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1426        serde_json::from_str(&local_var_content).map_err(Error::from)
1427    } else {
1428        let local_var_entity: Option<UpdateDealError> = serde_json::from_str(&local_var_content).ok();
1429        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1430        Err(Error::ResponseError(local_var_error))
1431    }
1432}
1433
1434/// Updates the details of the product that has been attached to a deal.
1435pub async fn update_deal_product(configuration: &configuration::Configuration, id: i32, product_attachment_id: i32, update_deal_product_request: Option<crate::models::UpdateDealProductRequest>) -> Result<crate::models::GetProductAttachementResponse200, Error<UpdateDealProductError>> {
1436    let local_var_configuration = configuration;
1437
1438    let local_var_client = &local_var_configuration.client;
1439
1440    let local_var_uri_str = format!("{}/deals/{id}/products/{product_attachment_id}", local_var_configuration.base_path, id=id, product_attachment_id=product_attachment_id);
1441    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1442
1443    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1444        let local_var_key = local_var_apikey.key.clone();
1445        let local_var_value = match local_var_apikey.prefix {
1446            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1447            None => local_var_key,
1448        };
1449        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
1450    }
1451    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1452        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1453    }
1454    local_var_req_builder = local_var_req_builder.json(&update_deal_product_request);
1455
1456    let local_var_req = local_var_req_builder.build()?;
1457    let local_var_resp = local_var_client.execute(local_var_req).await?;
1458
1459    let local_var_status = local_var_resp.status();
1460    let local_var_content = local_var_resp.text().await?;
1461
1462    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1463        serde_json::from_str(&local_var_content).map_err(Error::from)
1464    } else {
1465        let local_var_entity: Option<UpdateDealProductError> = serde_json::from_str(&local_var_content).ok();
1466        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
1467        Err(Error::ResponseError(local_var_error))
1468    }
1469}
1470