pipedrive_rs/apis/
webhooks_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_webhook`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AddWebhookError {
22    Status400(crate::models::WebhooksBadRequestResponse),
23    Status401(crate::models::UnathorizedResponse),
24    UnknownValue(serde_json::Value),
25}
26
27/// struct for typed errors of method [`delete_webhook`]
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(untagged)]
30pub enum DeleteWebhookError {
31    Status401(crate::models::UnathorizedResponse),
32    Status403(crate::models::DeleteWebhook403Response),
33    Status404(crate::models::WebhooksBadRequestResponse),
34    UnknownValue(serde_json::Value),
35}
36
37/// struct for typed errors of method [`get_webhooks`]
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum GetWebhooksError {
41    Status401(crate::models::UnathorizedResponse),
42    UnknownValue(serde_json::Value),
43}
44
45
46/// Creates a new Webhook and returns its details. Note that specifying an event which triggers the Webhook combines 2 parameters - `event_action` and `event_object`. E.g., use `*.*` for getting notifications about all events, `added.deal` for any newly added deals, `deleted.persons` for any deleted persons, etc. See <a href=\"https://pipedrive.readme.io/docs/guide-for-webhooks?ref=api_reference\" target=\"_blank\" rel=\"noopener noreferrer\">the guide for Webhooks</a> for more details.
47pub async fn add_webhook(configuration: &configuration::Configuration, add_webhook_request: Option<crate::models::AddWebhookRequest>) -> Result<crate::models::WebhookResponse200, Error<AddWebhookError>> {
48    let local_var_configuration = configuration;
49
50    let local_var_client = &local_var_configuration.client;
51
52    let local_var_uri_str = format!("{}/webhooks", local_var_configuration.base_path);
53    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
54
55    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
56        let local_var_key = local_var_apikey.key.clone();
57        let local_var_value = match local_var_apikey.prefix {
58            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
59            None => local_var_key,
60        };
61        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
62    }
63    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
64        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
65    }
66    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
67        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
68    };
69    local_var_req_builder = local_var_req_builder.json(&add_webhook_request);
70
71    let local_var_req = local_var_req_builder.build()?;
72    let local_var_resp = local_var_client.execute(local_var_req).await?;
73
74    let local_var_status = local_var_resp.status();
75    let local_var_content = local_var_resp.text().await?;
76
77    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
78        serde_json::from_str(&local_var_content).map_err(Error::from)
79    } else {
80        let local_var_entity: Option<AddWebhookError> = serde_json::from_str(&local_var_content).ok();
81        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
82        Err(Error::ResponseError(local_var_error))
83    }
84}
85
86/// Deletes the specified Webhook.
87pub async fn delete_webhook(configuration: &configuration::Configuration, id: i32) -> Result<crate::models::BaseResponse200, Error<DeleteWebhookError>> {
88    let local_var_configuration = configuration;
89
90    let local_var_client = &local_var_configuration.client;
91
92    let local_var_uri_str = format!("{}/webhooks/{id}", local_var_configuration.base_path, id=id);
93    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
94
95    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
96        let local_var_key = local_var_apikey.key.clone();
97        let local_var_value = match local_var_apikey.prefix {
98            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
99            None => local_var_key,
100        };
101        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
102    }
103    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
104        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
105    }
106    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
107        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
108    };
109
110    let local_var_req = local_var_req_builder.build()?;
111    let local_var_resp = local_var_client.execute(local_var_req).await?;
112
113    let local_var_status = local_var_resp.status();
114    let local_var_content = local_var_resp.text().await?;
115
116    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
117        serde_json::from_str(&local_var_content).map_err(Error::from)
118    } else {
119        let local_var_entity: Option<DeleteWebhookError> = serde_json::from_str(&local_var_content).ok();
120        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
121        Err(Error::ResponseError(local_var_error))
122    }
123}
124
125/// Returns data about all the Webhooks of a company.
126pub async fn get_webhooks(configuration: &configuration::Configuration, ) -> Result<crate::models::GetWebhooksResponse200, Error<GetWebhooksError>> {
127    let local_var_configuration = configuration;
128
129    let local_var_client = &local_var_configuration.client;
130
131    let local_var_uri_str = format!("{}/webhooks", local_var_configuration.base_path);
132    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
133
134    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
135        let local_var_key = local_var_apikey.key.clone();
136        let local_var_value = match local_var_apikey.prefix {
137            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
138            None => local_var_key,
139        };
140        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
141    }
142    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
143        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
144    }
145    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
146        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
147    };
148
149    let local_var_req = local_var_req_builder.build()?;
150    let local_var_resp = local_var_client.execute(local_var_req).await?;
151
152    let local_var_status = local_var_resp.status();
153    let local_var_content = local_var_resp.text().await?;
154
155    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
156        serde_json::from_str(&local_var_content).map_err(Error::from)
157    } else {
158        let local_var_entity: Option<GetWebhooksError> = serde_json::from_str(&local_var_content).ok();
159        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
160        Err(Error::ResponseError(local_var_error))
161    }
162}
163