Skip to main content

dhan_rs/api/
conditional.rs

1//! Conditional Trigger endpoints.
2
3use crate::client::DhanClient;
4use crate::error::Result;
5use crate::types::conditional::*;
6
7impl DhanClient {
8    /// Place a new conditional trigger.
9    ///
10    /// **Endpoint:** `POST /v2/alerts/orders`
11    pub async fn place_conditional_trigger(
12        &self,
13        req: &ConditionalTriggerRequest,
14    ) -> Result<ConditionalTriggerResponse> {
15        self.post("/v2/alerts/orders", req).await
16    }
17
18    /// Modify an existing conditional trigger.
19    ///
20    /// **Endpoint:** `PUT /v2/alerts/orders/{alertId}`
21    pub async fn modify_conditional_trigger(
22        &self,
23        alert_id: &str,
24        req: &ConditionalTriggerRequest,
25    ) -> Result<ConditionalTriggerResponse> {
26        self.put(&format!("/v2/alerts/orders/{alert_id}"), req)
27            .await
28    }
29
30    /// Delete a conditional trigger.
31    ///
32    /// **Endpoint:** `DELETE /v2/alerts/orders/{alertId}`
33    pub async fn delete_conditional_trigger(
34        &self,
35        alert_id: &str,
36    ) -> Result<ConditionalTriggerResponse> {
37        self.delete(&format!("/v2/alerts/orders/{alert_id}")).await
38    }
39
40    /// Get a specific conditional trigger by its ID.
41    ///
42    /// **Endpoint:** `GET /v2/alerts/orders/{alertId}`
43    pub async fn get_conditional_trigger(
44        &self,
45        alert_id: &str,
46    ) -> Result<ConditionalTriggerDetail> {
47        self.get(&format!("/v2/alerts/orders/{alert_id}")).await
48    }
49
50    /// Get all conditional triggers.
51    ///
52    /// **Endpoint:** `GET /v2/alerts/orders`
53    pub async fn get_all_conditional_triggers(&self) -> Result<Vec<ConditionalTriggerDetail>> {
54        self.get("/v2/alerts/orders").await
55    }
56}