svix_webhook_with_clone/api/
operational_webhook_endpoint.rs

1use super::{Ordering, PostOptions};
2use crate::{
3    apis::webhook_endpoint_api as operational_webhook_endpoint_api, error::Result, models::*,
4    Configuration,
5};
6
7#[derive(Default)]
8pub struct OperationalWebhookEndpointListOptions {
9    pub iterator: Option<String>,
10    pub limit: Option<i32>,
11    pub order: Option<Ordering>,
12}
13
14pub struct OperationalWebhookEndpoint<'a> {
15    cfg: &'a Configuration,
16}
17
18impl<'a> OperationalWebhookEndpoint<'a> {
19    pub(super) fn new(cfg: &'a Configuration) -> Self {
20        Self { cfg }
21    }
22
23    pub async fn list(
24        &self,
25        options: Option<OperationalWebhookEndpointListOptions>,
26    ) -> Result<ListResponseOperationalWebhookEndpointOut> {
27        let OperationalWebhookEndpointListOptions {
28            iterator,
29            limit,
30            order,
31        } = options.unwrap_or_default();
32        operational_webhook_endpoint_api::list_operational_webhook_endpoints(
33            self.cfg,
34            operational_webhook_endpoint_api::ListOperationalWebhookEndpointsParams {
35                order,
36                iterator,
37                limit,
38            },
39        )
40        .await
41    }
42
43    pub async fn create(
44        &self,
45        endpoint_in: OperationalWebhookEndpointIn,
46        options: Option<PostOptions>,
47    ) -> Result<OperationalWebhookEndpointOut> {
48        let PostOptions { idempotency_key } = options.unwrap_or_default();
49        operational_webhook_endpoint_api::create_operational_webhook_endpoint(
50            self.cfg,
51            operational_webhook_endpoint_api::CreateOperationalWebhookEndpointParams {
52                operational_webhook_endpoint_in: endpoint_in,
53                idempotency_key,
54            },
55        )
56        .await
57    }
58
59    pub async fn get(&self, endpoint_id: String) -> Result<OperationalWebhookEndpointOut> {
60        operational_webhook_endpoint_api::get_operational_webhook_endpoint(
61            self.cfg,
62            operational_webhook_endpoint_api::GetOperationalWebhookEndpointParams { endpoint_id },
63        )
64        .await
65    }
66
67    pub async fn update(
68        &self,
69        endpoint_id: String,
70        endpoint_update: OperationalWebhookEndpointUpdate,
71    ) -> Result<OperationalWebhookEndpointOut> {
72        operational_webhook_endpoint_api::update_operational_webhook_endpoint(
73            self.cfg,
74            operational_webhook_endpoint_api::UpdateOperationalWebhookEndpointParams {
75                endpoint_id,
76                operational_webhook_endpoint_update: endpoint_update,
77            },
78        )
79        .await
80    }
81
82    pub async fn delete(&self, endpoint_id: String) -> Result<()> {
83        operational_webhook_endpoint_api::delete_operational_webhook_endpoint(
84            self.cfg,
85            operational_webhook_endpoint_api::DeleteOperationalWebhookEndpointParams {
86                endpoint_id,
87            },
88        )
89        .await
90    }
91
92    pub async fn get_secret(
93        &self,
94        endpoint_id: String,
95    ) -> Result<OperationalWebhookEndpointSecretOut> {
96        operational_webhook_endpoint_api::get_operational_webhook_endpoint_secret(
97            self.cfg,
98            operational_webhook_endpoint_api::GetOperationalWebhookEndpointSecretParams {
99                endpoint_id,
100            },
101        )
102        .await
103    }
104
105    pub async fn rotate_secret(
106        &self,
107        endpoint_id: String,
108        endpoint_secret_rotate_in: OperationalWebhookEndpointSecretIn,
109    ) -> Result<()> {
110        operational_webhook_endpoint_api::rotate_operational_webhook_endpoint_secret(
111            self.cfg,
112            operational_webhook_endpoint_api::RotateOperationalWebhookEndpointSecretParams {
113                endpoint_id,
114                operational_webhook_endpoint_secret_in: endpoint_secret_rotate_in,
115                idempotency_key: None,
116            },
117        )
118        .await
119    }
120}