architect_api/orderflow/
mod.rs

1use crate::{oms::*, symbology::ExecutionVenue, AccountIdOrName, TraderIdOrEmail};
2use derive::grpc;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6pub mod cancel;
7pub mod fill;
8pub mod order;
9pub mod order_id;
10pub mod order_types;
11
12pub use cancel::*;
13pub use fill::*;
14pub use order::*;
15pub use order_id::*;
16pub use order_types::*;
17
18#[grpc(package = "json.architect")]
19#[grpc(service = "Orderflow", name = "orderflow", response = "Orderflow", bidi_streaming)]
20#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
21#[serde(tag = "t")]
22/// <!-- py: tag=t -->
23pub enum OrderflowRequest {
24    #[serde(rename = "p")]
25    #[schemars(title = "PlaceOrder|PlaceOrderRequest")]
26    PlaceOrder(PlaceOrderRequest),
27    #[serde(rename = "x")]
28    #[schemars(title = "CancelOrder|CancelOrderRequest")]
29    CancelOrder(CancelOrderRequest),
30    #[serde(rename = "xo")]
31    #[schemars(title = "CancelAllOrders|CancelAllOrdersRequest")]
32    CancelAllOrders(CancelAllOrdersRequest),
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
36#[serde(tag = "t")]
37/// <!-- py: tag=t -->
38pub enum Orderflow {
39    #[serde(rename = "w")]
40    #[schemars(title = "OrderPending|Order")]
41    OrderPending(Order),
42    #[serde(rename = "a")]
43    #[schemars(title = "OrderAck|OrderAck")]
44    OrderAck(OrderAck),
45    #[serde(rename = "r")]
46    #[schemars(title = "OrderReject|OrderReject")]
47    OrderReject(OrderReject),
48    #[serde(rename = "o")]
49    #[schemars(title = "OrderOut|OrderOut")]
50    OrderOut(OrderOut),
51    #[serde(rename = "ox")]
52    #[schemars(title = "OrderReconciledOut|OrderOut")]
53    OrderReconciledOut(OrderOut),
54    #[serde(rename = "z")]
55    #[schemars(title = "OrderStale|OrderStale")]
56    OrderStale(OrderStale),
57    #[serde(rename = "xc")]
58    #[schemars(title = "CancelPending|Cancel")]
59    CancelPending(Cancel),
60    #[serde(rename = "xr")]
61    #[schemars(title = "CancelReject|CancelReject")]
62    CancelReject(CancelReject),
63    #[serde(rename = "xa")]
64    #[schemars(title = "OrderCanceling|OrderCanceling")]
65    OrderCanceling(OrderCanceling),
66    #[serde(rename = "xx")]
67    #[schemars(title = "OrderCanceled|OrderCanceled")]
68    OrderCanceled(OrderCanceled),
69    #[serde(rename = "f")]
70    #[schemars(title = "Fill|Fill")]
71    Fill(Fill),
72    #[serde(rename = "af")]
73    #[schemars(title = "AberrantFill|AberrantFill")]
74    AberrantFill(AberrantFill),
75}
76
77/// Subscribe/listen to orderflow events.
78#[grpc(package = "json.architect")]
79#[grpc(
80    service = "Orderflow",
81    name = "subscribe_orderflow",
82    response = "Orderflow",
83    server_streaming
84)]
85#[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema)]
86pub struct SubscribeOrderflowRequest {
87    #[serde(default)]
88    pub execution_venue: Option<ExecutionVenue>,
89    #[serde(default)]
90    pub trader: Option<TraderIdOrEmail>,
91    #[serde(default)]
92    pub account: Option<AccountIdOrName>,
93}
94
95#[grpc(package = "json.architect")]
96#[grpc(service = "Orderflow", name = "dropcopy", response = "Dropcopy", server_streaming)]
97#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
98pub struct DropcopyRequest {
99    #[serde(default)]
100    pub execution_venue: Option<ExecutionVenue>,
101    #[serde(default)]
102    pub trader: Option<TraderIdOrEmail>,
103    #[serde(default)]
104    pub account: Option<AccountIdOrName>,
105    #[serde(default)]
106    pub orders: bool,
107    #[serde(default = "DropcopyRequest::default_fills")]
108    pub fills: bool,
109    #[serde(default)]
110    pub aberrant_fills: bool,
111}
112
113impl DropcopyRequest {
114    fn default_fills() -> bool {
115        true
116    }
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
120#[serde(tag = "t")]
121/// <!-- py: tag=t -->
122pub enum Dropcopy {
123    #[serde(rename = "o")]
124    #[schemars(title = "Order|Order")]
125    Order(Order),
126    #[schemars(title = "Fill|Fill")]
127    #[serde(rename = "f")]
128    Fill(Fill),
129    #[serde(rename = "af")]
130    #[schemars(title = "AberrantFill|AberrantFill")]
131    AberrantFill(AberrantFill),
132}