architect_api/orderflow/
mod.rs1use 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")]
22pub 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")]
37pub 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#[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")]
121pub 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}