pipedrive_rs/apis/
products_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_product`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AddProductError {
22    UnknownValue(serde_json::Value),
23}
24
25/// struct for typed errors of method [`add_product_follower`]
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(untagged)]
28pub enum AddProductFollowerError {
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`delete_product`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum DeleteProductError {
36    UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`delete_product_follower`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum DeleteProductFollowerError {
43    UnknownValue(serde_json::Value),
44}
45
46/// struct for typed errors of method [`get_product`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum GetProductError {
50    UnknownValue(serde_json::Value),
51}
52
53/// struct for typed errors of method [`get_product_deals`]
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(untagged)]
56pub enum GetProductDealsError {
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`get_product_files`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum GetProductFilesError {
64    UnknownValue(serde_json::Value),
65}
66
67/// struct for typed errors of method [`get_product_followers`]
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(untagged)]
70pub enum GetProductFollowersError {
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`get_product_users`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum GetProductUsersError {
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`get_products`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum GetProductsError {
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`search_products`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum SearchProductsError {
92    UnknownValue(serde_json::Value),
93}
94
95/// struct for typed errors of method [`update_product`]
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(untagged)]
98pub enum UpdateProductError {
99    UnknownValue(serde_json::Value),
100}
101
102
103/// Adds a new product to the Products inventory. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/adding-a-product\" target=\"_blank\" rel=\"noopener noreferrer\">adding a product</a>.
104pub async fn add_product(configuration: &configuration::Configuration, add_product_request: Option<crate::models::AddProductRequest>) -> Result<crate::models::GetproductResponse200, Error<AddProductError>> {
105    let local_var_configuration = configuration;
106
107    let local_var_client = &local_var_configuration.client;
108
109    let local_var_uri_str = format!("{}/products", local_var_configuration.base_path);
110    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
111
112    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
113        let local_var_key = local_var_apikey.key.clone();
114        let local_var_value = match local_var_apikey.prefix {
115            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
116            None => local_var_key,
117        };
118        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
119    }
120    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
121        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
122    }
123    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
124        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
125    };
126    local_var_req_builder = local_var_req_builder.json(&add_product_request);
127
128    let local_var_req = local_var_req_builder.build()?;
129    let local_var_resp = local_var_client.execute(local_var_req).await?;
130
131    let local_var_status = local_var_resp.status();
132    let local_var_content = local_var_resp.text().await?;
133
134    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
135        serde_json::from_str(&local_var_content).map_err(Error::from)
136    } else {
137        let local_var_entity: Option<AddProductError> = serde_json::from_str(&local_var_content).ok();
138        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
139        Err(Error::ResponseError(local_var_error))
140    }
141}
142
143/// Adds a follower to a product.
144pub async fn add_product_follower(configuration: &configuration::Configuration, id: i32, add_product_follower_request: Option<crate::models::AddProductFollowerRequest>) -> Result<crate::models::NewFollowerResponse200, Error<AddProductFollowerError>> {
145    let local_var_configuration = configuration;
146
147    let local_var_client = &local_var_configuration.client;
148
149    let local_var_uri_str = format!("{}/products/{id}/followers", local_var_configuration.base_path, id=id);
150    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
151
152    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
153        let local_var_key = local_var_apikey.key.clone();
154        let local_var_value = match local_var_apikey.prefix {
155            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
156            None => local_var_key,
157        };
158        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
159    }
160    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
161        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
162    }
163    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
164        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
165    };
166    local_var_req_builder = local_var_req_builder.json(&add_product_follower_request);
167
168    let local_var_req = local_var_req_builder.build()?;
169    let local_var_resp = local_var_client.execute(local_var_req).await?;
170
171    let local_var_status = local_var_resp.status();
172    let local_var_content = local_var_resp.text().await?;
173
174    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
175        serde_json::from_str(&local_var_content).map_err(Error::from)
176    } else {
177        let local_var_entity: Option<AddProductFollowerError> = serde_json::from_str(&local_var_content).ok();
178        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
179        Err(Error::ResponseError(local_var_error))
180    }
181}
182
183/// Marks a product as deleted. After 30 days, the product will be permanently deleted.
184pub async fn delete_product(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::DeleteProductResponse200, Error<DeleteProductError>> {
185    let local_var_configuration = configuration;
186
187    let local_var_client = &local_var_configuration.client;
188
189    let local_var_uri_str = format!("{}/products/{id}", local_var_configuration.base_path, id=id);
190    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
191
192    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
193        let local_var_key = local_var_apikey.key.clone();
194        let local_var_value = match local_var_apikey.prefix {
195            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
196            None => local_var_key,
197        };
198        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
199    }
200    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
201        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
202    }
203    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
204        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
205    };
206
207    let local_var_req = local_var_req_builder.build()?;
208    let local_var_resp = local_var_client.execute(local_var_req).await?;
209
210    let local_var_status = local_var_resp.status();
211    let local_var_content = local_var_resp.text().await?;
212
213    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
214        serde_json::from_str(&local_var_content).map_err(Error::from)
215    } else {
216        let local_var_entity: Option<DeleteProductError> = serde_json::from_str(&local_var_content).ok();
217        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
218        Err(Error::ResponseError(local_var_error))
219    }
220}
221
222/// Deletes a follower from a product.
223pub async fn delete_product_follower(configuration: &configuration::Configuration, id: i32, follower_id: i32) -> Result<crate::models::DeleteProductFollowerResponse200, Error<DeleteProductFollowerError>> {
224    let local_var_configuration = configuration;
225
226    let local_var_client = &local_var_configuration.client;
227
228    let local_var_uri_str = format!("{}/products/{id}/followers/{follower_id}", local_var_configuration.base_path, id=id, follower_id=follower_id);
229    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
230
231    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
232        let local_var_key = local_var_apikey.key.clone();
233        let local_var_value = match local_var_apikey.prefix {
234            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
235            None => local_var_key,
236        };
237        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
238    }
239    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
240        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
241    }
242    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
243        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
244    };
245
246    let local_var_req = local_var_req_builder.build()?;
247    let local_var_resp = local_var_client.execute(local_var_req).await?;
248
249    let local_var_status = local_var_resp.status();
250    let local_var_content = local_var_resp.text().await?;
251
252    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
253        serde_json::from_str(&local_var_content).map_err(Error::from)
254    } else {
255        let local_var_entity: Option<DeleteProductFollowerError> = serde_json::from_str(&local_var_content).ok();
256        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
257        Err(Error::ResponseError(local_var_error))
258    }
259}
260
261/// Returns data about a specific product.
262pub async fn get_product(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::GetproductResponse200, Error<GetProductError>> {
263    let local_var_configuration = configuration;
264
265    let local_var_client = &local_var_configuration.client;
266
267    let local_var_uri_str = format!("{}/products/{id}", local_var_configuration.base_path, id=id);
268    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
269
270    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
271        let local_var_key = local_var_apikey.key.clone();
272        let local_var_value = match local_var_apikey.prefix {
273            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
274            None => local_var_key,
275        };
276        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
277    }
278    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
279        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
280    }
281    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
282        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
283    };
284
285    let local_var_req = local_var_req_builder.build()?;
286    let local_var_resp = local_var_client.execute(local_var_req).await?;
287
288    let local_var_status = local_var_resp.status();
289    let local_var_content = local_var_resp.text().await?;
290
291    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
292        serde_json::from_str(&local_var_content).map_err(Error::from)
293    } else {
294        let local_var_entity: Option<GetProductError> = serde_json::from_str(&local_var_content).ok();
295        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
296        Err(Error::ResponseError(local_var_error))
297    }
298}
299
300/// Returns data about deals that have a product attached to it.
301pub async fn get_product_deals(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, status: Option<&str>) -> Result<crate::models::GetAssociatedDealsResponse200, Error<GetProductDealsError>> {
302    let local_var_configuration = configuration;
303
304    let local_var_client = &local_var_configuration.client;
305
306    let local_var_uri_str = format!("{}/products/{id}/deals", local_var_configuration.base_path, id=id);
307    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
308
309    if let Some(ref local_var_str) = start {
310        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
311    }
312    if let Some(ref local_var_str) = limit {
313        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
314    }
315    if let Some(ref local_var_str) = status {
316        local_var_req_builder = local_var_req_builder.query(&[("status", &local_var_str.to_string())]);
317    }
318    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
319        let local_var_key = local_var_apikey.key.clone();
320        let local_var_value = match local_var_apikey.prefix {
321            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
322            None => local_var_key,
323        };
324        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
325    }
326    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
327        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
328    }
329    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
330        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
331    };
332
333    let local_var_req = local_var_req_builder.build()?;
334    let local_var_resp = local_var_client.execute(local_var_req).await?;
335
336    let local_var_status = local_var_resp.status();
337    let local_var_content = local_var_resp.text().await?;
338
339    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
340        serde_json::from_str(&local_var_content).map_err(Error::from)
341    } else {
342        let local_var_entity: Option<GetProductDealsError> = serde_json::from_str(&local_var_content).ok();
343        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
344        Err(Error::ResponseError(local_var_error))
345    }
346}
347
348/// Lists files associated with a product.
349pub async fn get_product_files(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>, sort: Option<&str>) -> Result<crate::models::GetAssociatedFilesResponse2001, Error<GetProductFilesError>> {
350    let local_var_configuration = configuration;
351
352    let local_var_client = &local_var_configuration.client;
353
354    let local_var_uri_str = format!("{}/products/{id}/files", local_var_configuration.base_path, id=id);
355    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
356
357    if let Some(ref local_var_str) = start {
358        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
359    }
360    if let Some(ref local_var_str) = limit {
361        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
362    }
363    if let Some(ref local_var_str) = sort {
364        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
365    }
366    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
367        let local_var_key = local_var_apikey.key.clone();
368        let local_var_value = match local_var_apikey.prefix {
369            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
370            None => local_var_key,
371        };
372        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
373    }
374    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
375        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
376    }
377    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
378        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
379    };
380
381    let local_var_req = local_var_req_builder.build()?;
382    let local_var_resp = local_var_client.execute(local_var_req).await?;
383
384    let local_var_status = local_var_resp.status();
385    let local_var_content = local_var_resp.text().await?;
386
387    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
388        serde_json::from_str(&local_var_content).map_err(Error::from)
389    } else {
390        let local_var_entity: Option<GetProductFilesError> = serde_json::from_str(&local_var_content).ok();
391        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
392        Err(Error::ResponseError(local_var_error))
393    }
394}
395
396/// Lists the followers of a product.
397pub async fn get_product_followers(configuration: &configuration::Configuration, id: i32, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetProductFollowersResponseSuccess, Error<GetProductFollowersError>> {
398    let local_var_configuration = configuration;
399
400    let local_var_client = &local_var_configuration.client;
401
402    let local_var_uri_str = format!("{}/products/{id}/followers", local_var_configuration.base_path, id=id);
403    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
404
405    if let Some(ref local_var_str) = start {
406        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
407    }
408    if let Some(ref local_var_str) = limit {
409        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
410    }
411    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
412        let local_var_key = local_var_apikey.key.clone();
413        let local_var_value = match local_var_apikey.prefix {
414            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
415            None => local_var_key,
416        };
417        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
418    }
419    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
420        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
421    }
422    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
423        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
424    };
425
426    let local_var_req = local_var_req_builder.build()?;
427    let local_var_resp = local_var_client.execute(local_var_req).await?;
428
429    let local_var_status = local_var_resp.status();
430    let local_var_content = local_var_resp.text().await?;
431
432    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
433        serde_json::from_str(&local_var_content).map_err(Error::from)
434    } else {
435        let local_var_entity: Option<GetProductFollowersError> = serde_json::from_str(&local_var_content).ok();
436        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
437        Err(Error::ResponseError(local_var_error))
438    }
439}
440
441/// Lists users permitted to access a product.
442pub async fn get_product_users(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::UserIds, Error<GetProductUsersError>> {
443    let local_var_configuration = configuration;
444
445    let local_var_client = &local_var_configuration.client;
446
447    let local_var_uri_str = format!("{}/products/{id}/permittedUsers", local_var_configuration.base_path, id=id);
448    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
449
450    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
451        let local_var_key = local_var_apikey.key.clone();
452        let local_var_value = match local_var_apikey.prefix {
453            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
454            None => local_var_key,
455        };
456        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
457    }
458    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
459        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
460    }
461    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
462        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
463    };
464
465    let local_var_req = local_var_req_builder.build()?;
466    let local_var_resp = local_var_client.execute(local_var_req).await?;
467
468    let local_var_status = local_var_resp.status();
469    let local_var_content = local_var_resp.text().await?;
470
471    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
472        serde_json::from_str(&local_var_content).map_err(Error::from)
473    } else {
474        let local_var_entity: Option<GetProductUsersError> = serde_json::from_str(&local_var_content).ok();
475        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
476        Err(Error::ResponseError(local_var_error))
477    }
478}
479
480/// Returns data about all products.
481pub async fn get_products(configuration: &configuration::Configuration, user_id: Option<i32>, filter_id: Option<i32>, ids: Option<Vec<i32>>, first_char: Option<&str>, get_summary: Option<bool>, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetProductsResponse200, Error<GetProductsError>> {
482    let local_var_configuration = configuration;
483
484    let local_var_client = &local_var_configuration.client;
485
486    let local_var_uri_str = format!("{}/products", local_var_configuration.base_path);
487    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
488
489    if let Some(ref local_var_str) = user_id {
490        local_var_req_builder = local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
491    }
492    if let Some(ref local_var_str) = filter_id {
493        local_var_req_builder = local_var_req_builder.query(&[("filter_id", &local_var_str.to_string())]);
494    }
495    if let Some(ref local_var_str) = ids {
496        local_var_req_builder = match "multi" {
497            "multi" => local_var_req_builder.query(&local_var_str.into_iter().map(|p| ("ids".to_owned(), p.to_string())).collect::<Vec<(std::string::String, std::string::String)>>()),
498            _ => local_var_req_builder.query(&[("ids", &local_var_str.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string())]),
499        };
500    }
501    if let Some(ref local_var_str) = first_char {
502        local_var_req_builder = local_var_req_builder.query(&[("first_char", &local_var_str.to_string())]);
503    }
504    if let Some(ref local_var_str) = get_summary {
505        local_var_req_builder = local_var_req_builder.query(&[("get_summary", &local_var_str.to_string())]);
506    }
507    if let Some(ref local_var_str) = start {
508        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
509    }
510    if let Some(ref local_var_str) = limit {
511        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
512    }
513    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
514        let local_var_key = local_var_apikey.key.clone();
515        let local_var_value = match local_var_apikey.prefix {
516            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
517            None => local_var_key,
518        };
519        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
520    }
521    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
522        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
523    }
524    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
525        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
526    };
527
528    let local_var_req = local_var_req_builder.build()?;
529    let local_var_resp = local_var_client.execute(local_var_req).await?;
530
531    let local_var_status = local_var_resp.status();
532    let local_var_content = local_var_resp.text().await?;
533
534    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
535        serde_json::from_str(&local_var_content).map_err(Error::from)
536    } else {
537        let local_var_entity: Option<GetProductsError> = serde_json::from_str(&local_var_content).ok();
538        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
539        Err(Error::ResponseError(local_var_error))
540    }
541}
542
543/// Searches all products by name, code 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.
544pub async fn search_products(configuration: &configuration::Configuration, term: &str, fields: Option<&str>, exact_match: Option<bool>, include_fields: Option<&str>, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::SearchProductsResponse200, Error<SearchProductsError>> {
545    let local_var_configuration = configuration;
546
547    let local_var_client = &local_var_configuration.client;
548
549    let local_var_uri_str = format!("{}/products/search", local_var_configuration.base_path);
550    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
551
552    local_var_req_builder = local_var_req_builder.query(&[("term", &term.to_string())]);
553    if let Some(ref local_var_str) = fields {
554        local_var_req_builder = local_var_req_builder.query(&[("fields", &local_var_str.to_string())]);
555    }
556    if let Some(ref local_var_str) = exact_match {
557        local_var_req_builder = local_var_req_builder.query(&[("exact_match", &local_var_str.to_string())]);
558    }
559    if let Some(ref local_var_str) = include_fields {
560        local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
561    }
562    if let Some(ref local_var_str) = start {
563        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
564    }
565    if let Some(ref local_var_str) = limit {
566        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
567    }
568    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
569        let local_var_key = local_var_apikey.key.clone();
570        let local_var_value = match local_var_apikey.prefix {
571            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
572            None => local_var_key,
573        };
574        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
575    }
576    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
577        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
578    }
579    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
580        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
581    };
582
583    let local_var_req = local_var_req_builder.build()?;
584    let local_var_resp = local_var_client.execute(local_var_req).await?;
585
586    let local_var_status = local_var_resp.status();
587    let local_var_content = local_var_resp.text().await?;
588
589    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
590        serde_json::from_str(&local_var_content).map_err(Error::from)
591    } else {
592        let local_var_entity: Option<SearchProductsError> = serde_json::from_str(&local_var_content).ok();
593        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
594        Err(Error::ResponseError(local_var_error))
595    }
596}
597
598/// Updates product data.
599pub async fn update_product(configuration: &configuration::Configuration, id: i32, add_product_request1: Option<crate::models::AddProductRequest1>) -> Result<crate::models::UpdateProductResponse200, Error<UpdateProductError>> {
600    let local_var_configuration = configuration;
601
602    let local_var_client = &local_var_configuration.client;
603
604    let local_var_uri_str = format!("{}/products/{id}", local_var_configuration.base_path, id=id);
605    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
606
607    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
608        let local_var_key = local_var_apikey.key.clone();
609        let local_var_value = match local_var_apikey.prefix {
610            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
611            None => local_var_key,
612        };
613        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
614    }
615    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
616        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
617    }
618    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
619        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
620    };
621    local_var_req_builder = local_var_req_builder.json(&add_product_request1);
622
623    let local_var_req = local_var_req_builder.build()?;
624    let local_var_resp = local_var_client.execute(local_var_req).await?;
625
626    let local_var_status = local_var_resp.status();
627    let local_var_content = local_var_resp.text().await?;
628
629    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
630        serde_json::from_str(&local_var_content).map_err(Error::from)
631    } else {
632        let local_var_entity: Option<UpdateProductError> = serde_json::from_str(&local_var_content).ok();
633        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
634        Err(Error::ResponseError(local_var_error))
635    }
636}
637