dhan_rs/types/
conditional.rs1#![allow(missing_docs)]
2use serde::{Deserialize, Serialize};
5
6use crate::types::enums::*;
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
14#[serde(rename_all = "camelCase")]
15pub struct AlertCondition {
16 pub comparison_type: String,
18 pub exchange_segment: ExchangeSegment,
20 pub security_id: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub indicator_name: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub time_frame: Option<String>,
28 pub operator: String,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub comparing_value: Option<serde_json::Value>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub comparing_indicator_name: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub exp_date: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub frequency: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub user_note: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct AlertOrder {
55 pub transaction_type: TransactionType,
56 pub exchange_segment: ExchangeSegment,
57 pub product_type: ProductType,
58 pub order_type: OrderType,
59 pub security_id: String,
60 pub quantity: u64,
61 pub validity: Validity,
62 pub price: String,
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub disc_quantity: Option<String>,
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub trigger_price: Option<String>,
70}
71
72#[derive(Debug, Clone, Serialize)]
80#[serde(rename_all = "camelCase")]
81pub struct ConditionalTriggerRequest {
82 pub dhan_client_id: String,
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub alert_id: Option<String>,
86 pub condition: AlertCondition,
87 pub orders: Vec<AlertOrder>,
88}
89
90#[derive(Debug, Clone, Deserialize)]
96#[serde(rename_all = "camelCase")]
97pub struct ConditionalTriggerResponse {
98 pub alert_id: String,
99 pub alert_status: String,
100}
101
102#[derive(Debug, Clone, Deserialize)]
108#[serde(rename_all = "camelCase")]
109pub struct ConditionalTriggerDetail {
110 pub alert_id: Option<String>,
111 pub alert_status: Option<String>,
112 pub created_time: Option<String>,
113 pub triggered_time: Option<String>,
114 #[serde(default)]
115 pub last_price: Option<serde_json::Value>,
116 pub condition: Option<AlertCondition>,
117 #[serde(default)]
118 pub orders: Vec<AlertOrder>,
119}