// Version : "2026.5.0" syntax = "proto3"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; message ServerAcknowledgement{ enum ResponseCodesEnum{ SUCCESS = 0; WARNING = 1; FAILED = 2; ERROR = 3; TIMED_OUT = 4; SESSION_NOT_FOUND = 5; } string ServerResponse = 1; map OptionalFields = 2; string Message = 3; ResponseCodesEnum ResponseCode = 4; } message StartLoginSrpRequest{ string UserName = 1; string Domain = 2; } message StartLoginSrpResponse{ string Status = 1; string srpTransactId = 2; string srpSalt = 3; string srpN = 4; string srpg = 5; string srpb = 6; string Response = 7; ServerAcknowledgement Acknowledgement = 8; } message CompleteLoginSrpRequest{ string Identity = 1; string srpTransactId = 2; string strEphA = 3; string strMc = 4; string UserName = 5; string Domain = 6; string Locale = 7; } message CompleteLoginSrpResponse{ string UserToken = 1; string Response = 2; ServerAcknowledgement Acknowledgement = 3; } message MultiFactorAuthenticationRequest{ string VerificationCode = 1; string MFASecurityCode = 2; string UserName = 3; string Domain = 4; string Locale = 5; } message MultiFactorAuthenticationResponse{ string UserToken = 1; string Response = 2; ServerAcknowledgement Acknowledgement = 3; } message Price{ double DecimalValue = 1; int32 Denominator = 2; int32 Numerator = 3; uint32 Base = 4; int32 Int = 5; int32 BaseCode = 6; int32 IntegerValue = 7; bool Isnull = 8; } message Position{ double AverageShort0 = 1; double HistShortPrc0 = 2; double Shortpos0 = 3; double OrigShortpos0 = 4; double ScalpedProfit = 5; double Mmr = 6; double BoughtQty = 7; double SoldQty = 8; double SoldShortQty = 9; double BoughtAvgPrc = 10; double SoldAvgPrc = 11; double SoldShortAvgPrc = 12; double Commission = 13; double Shortpos = 14; double AverageShort = 15; double OrigLongpos0 = 16; double Longpos0 = 17; double AverageLong = 18; double Longpos = 19; double AverageLong0 = 20; double HistLongPrc0 = 21; double NetFees = 22; double HistScalpedProfit = 23; string Table = 24; string Bank = 25; string Branch = 26; string Customer = 27; string Deposit = 28; string Currency = 29; string DispName = 30; string Undersym = 31; int32 AcctType = 32; int32 TboAccountId = 33; int32 Rank = 34; int32 Styp = 35; } message AggregatePositionRecord{ double SoldShortQty = 1; double SoldQty = 2; double BoughtAvgPrc = 3; double BoughtQty = 4; double IntradayShortAvgPrc = 5; double IntradayShortPos = 6; double ShortAvgPrc = 7; double ShortPos = 8; double IntradayLongAvgPrc = 9; double IntradayLongPos = 10; double LongAvgPrc = 11; double LongPos = 12; double IntradayAvgPrc = 13; double IntradayPos = 14; double TotalAvgPrc = 15; double TotalPos = 16; double SoldAvgPrc = 17; double SoldShortAvgPrc = 18; string DispName = 19; string Deposit = 20; string Customer = 21; string Branch = 22; string Bank = 23; map ExtendedFields = 24; } message OrderResponse{ google.protobuf.Timestamp submitTime = 1; string OrderId = 2; string LinkedOrderId = 3; string RefersToId = 4; string TicketId = 5; string OriginalOrderId = 6; string Symbol = 7; string Type = 8; string CurrentStatus = 9; string TraderId =10; string ClaimedByClerk = 11; int32 Volume = 12; google.protobuf.DoubleValue Price = 13; PriceTypeEnum PriceType = 14; string Buyorsell = 15; string PairSpreadType = 19; string Reason = 20; string TimeStamp = 21; map ExtendedFields = 22; google.protobuf.Timestamp GoodFrom = 23; ExpirationType TimeInForce = 24; google.protobuf.DoubleValue StopPrice = 25; string UserMessage = 26; google.protobuf.Timestamp ExpirationDate = 27; string Side = 28; string Route = 29; string Account = 30; string OrderTag = 31; int32 VolumeTraded = 32; } message DepositRow{ double Mmr0Adj = 1; double Sma0 = 2; double Sma0Adj = 3; double HouseExcess0 = 4; double Orq0 = 5; double Cost = 6; double Mmr0NonDaytradeAdj = 7; double SrvPendingMargin = 8; double Commission = 9; double NetFees = 10; double HistScalpedProfit = 11; double CashBalanceAdj = 12; double ScalpedProfit = 13; double Mmr = 14; double Mmr0 = 15; double Marketvalue0 = 16; double CashBalance = 17; double EquityBalance = 18; double ExtraCbp = 19; double MinBalance = 20; double MaxOrderSize = 21; double ExcessEq0 = 22; double ExcessEq = 23; double PendingMargin = 24; double CbpRemaining = 25; string CalcTime = 26; string Table = 27; string Bank = 28; string Branch = 29; string Customer = 30; string Deposit = 31; string Currency = 32; int32 TboAccountId = 33; int32 DaysBack = 34; int32 Rank = 35; map ExtendedFields = 36; } message TodaysBalancesRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; } message TodaysBalancesResponse{ repeated DepositRow DepositList = 1; ServerAcknowledgement Acknowledgement = 2; } message TodaysActivityRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; bool IncludeUserSubmitOrder = 3; bool IncludeUserSubmitStagedOrder = 4; bool IncludeUserSubmitCompoundOrder = 5; bool IncludeForeignExecution = 6; bool IncludeUserSubmitChange = 7; bool IncludeUserSubmitCancel = 8; bool IncludeExchangeAcceptOrder = 9; bool IncludeExchangeTradeOrder = 10; bool IncludeUserSubmitTradeReport = 11; bool IncludeUserSubmitAllocation = 12; bool IncludeUserSubmitAllocationEx = 13; bool IncludeClerkReject = 14; bool IncludeOnlyCompleted = 15; bool UserSubmitStagedOrderFullInfo = 16; } message TodaysActivityResponse{ repeated OrderResponse OrderRecordList = 1; ServerAcknowledgement Acknowledgement = 2; } message BookOrder{ OrderResponse Order = 1; TodaysActivityResponse ChangeOrders = 2; TodaysActivityResponse CancelOrders = 3; TodaysActivityResponse Executions = 4; TodaysActivityResponse Allocations = 5; TodaysActivityResponse OrderHistory = 6; bool IsChangeOrCancelPending = 7; int64 ExecutedVolume = 8; int64 RemainingVolume = 9; double AveragePrice = 10; } message TodaysBrokenDownPositionsRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; string BBCDFilter = 3; string TickerFilter = 4; } message TodaysBrokenDownPositionsResponse{ repeated Position PositionRecords = 1; ServerAcknowledgement Acknowledgement = 2; } message TodaysNetPositionsRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; } message TodaysNetPositionsResponse{ repeated AggregatePositionRecord AggregatePositionsList = 1; ServerAcknowledgement Acknowledgement = 2; } message SubscribeNetPositionsRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; } message SubscribeNetPositionsResponse{ AggregatePositionRecord AggregatePositions = 1; ServerAcknowledgement Acknowledgement = 2; } message UnSubscribeNetPositionsRequest{ string UserToken = 1; } message UnSubscribeNetPositionsResponse{ ServerAcknowledgement Acknowledgement = 2; } message ConnectRequest{ string UserName = 1; string Domain = 2; string Password = 3; string Locale = 4; } message ConnectResponse{ string UserToken = 1; string Response = 2; ServerAcknowledgement Acknowledgement = 3; string DPermStatusCode = 4; string MFASecurityCode = 5; string MFAtotpPreference = 6; string MFAtotpValue = 7; } message DisconnectRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; } message DisconnectResponse{ string ServerResponse = 1; map OptionalFields = 2; ServerAcknowledgement Acknowledgement = 3; } message ChangePasswordSRPRequest{ string TransactId = 1; string UserName = 2; string Domain = 3; string OldPassword = 4; string NewPassword = 5; } message ChangePasswordSRPResponse{ string status = 1; string message = 2; ServerAcknowledgement Acknowledgement = 3; } message ChangePasswordRequest{ string UserName = 1; string Domain = 2; string OldPassword = 3; string NewPassword = 4; } message ChangePasswordResponse{ string status = 1; string message = 2; ServerAcknowledgement Acknowledgement = 3; } message SubscribeHeartBeatRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; } message SubscribeHeartBeatResponse{ enum HeartBeatStatus{ LIVE = 0; DEAD = 1; UNKNOWN = 2; } HeartBeatStatus Status = 1; ServerAcknowledgement Acknowledgement = 2; } message StrategyListRow{ string FirmName = 1; string UserName = 2; string AlgoName = 3; string StrategyName = 4; string StratCreateDate = 5; } message StrategyListRequest{ string UserToken = 1; string FirmName = 2; } message StrategyListResponse{ repeated StrategyListRow StrategyList = 1; ServerAcknowledgement Acknowledgement = 2; } message GetFirmNameRequest{ string UserToken = 1; } message GetFirmNameResponse{ string FirmName = 1; ServerAcknowledgement Acknowledgement = 2; } message UserExistsRequest{ string UserToken = 1; string FirmName = 2; } message UserExistsResponse{ bool UserExists = 1; string FirmName = 2; ServerAcknowledgement Acknowledgement = 3; } message GetStrategyDataRequest{ string UserToken = 1; string FirmName = 2; string AlgoName = 3; string StrategyName = 4; } message StrategyDataRow{ string FirmName = 1; string UserName = 2; string AlgoName = 3; string StrategyName = 4; int32 Version = 5; string StratParams = 6; string StratCreateDate = 7; string StratUpdateDate = 8; } message GetStrategyDataResponse{ StrategyDataRow StrategyData = 1; ServerAcknowledgement Acknowledgement = 2; } message CreateStrategyRequest{ string UserToken = 1; string FirmName = 2; string AlgoName = 3; string StrategyName = 4; string StratParams = 5; } message CreateStrategyResponse{ ServerAcknowledgement Acknowledgement = 1; } message UpdateStrategyRequest{ string UserToken = 1; string FirmName = 2; string AlgoName = 3; string StrategyName = 4; int32 Version = 5; string StratParams = 6; } message UpdateStrategyResponse{ ServerAcknowledgement Acknowledgement = 1; } message TodaysActivityJsonRequest{ string UserToken = 1; int32 TimeoutInSeconds = 2; bool IncludeUserSubmitOrder = 3; bool IncludeUserSubmitStagedOrder = 4; bool IncludeUserSubmitCompoundOrder = 5; bool IncludeForeignExecution = 6; bool IncludeUserSubmitChange = 7; bool IncludeUserSubmitCancel = 8; bool IncludeExchangeAcceptOrder = 9; bool IncludeExchangeTradeOrder = 10; bool IncludeUserSubmitTradeReport = 11; bool IncludeUserSubmitAllocation = 12; bool IncludeUserSubmitAllocationEx = 13; bool IncludeClerkReject = 14; bool IncludeOnlyCompleted = 15; } message TodaysActivityJsonResponse{ string TodaysActivityJson = 1; ServerAcknowledgement Acknowledgement = 2; } message GetUserRoutesRequest{ string UserToken = 1; string AccountList = 2; } message GetUserRoutesResponse{ map UserRoutes = 1; ServerAcknowledgement Acknowledgement = 2; } message RoutePropsMap{ map Properties = 1; } message GetUserRoutePropsRequest{ string UserToken = 1; string FilterRoutesList = 2; string FilterRoutePropsList = 3; } message GetUserRoutePropsResponse{ map UserRouteProps = 1; ServerAcknowledgement Acknowledgement = 2; } message ExpirationType{ enum ExpirationTypes{ DAY = 0; GTC = 1; GTX = 2; CLO = 3; OPG = 4; IOC = 5; GTD = 6; OTHER = 7; } ExpirationTypes Expiration = 1; } message PriceTypeEnum{ enum PriceTypesEnum{ Market = 0; Limit = 1; StopMarket = 2; StopLimit = 3; Other = 4; } PriceTypesEnum PriceType = 1; } service UtilityServices { rpc GetTodaysBalances(TodaysBalancesRequest) returns (TodaysBalancesResponse); rpc GetTodaysActivity(TodaysActivityRequest) returns (TodaysActivityResponse); rpc GetTodaysBrokenDownPositions(TodaysBrokenDownPositionsRequest) returns (TodaysBrokenDownPositionsResponse); rpc GetTodaysNetPositions(TodaysNetPositionsRequest) returns (TodaysNetPositionsResponse); rpc SubscribeTodaysNetPositions(SubscribeNetPositionsRequest) returns (stream SubscribeNetPositionsResponse); rpc UnSubscribeTodaysNetPositions(UnSubscribeNetPositionsRequest) returns ( UnSubscribeNetPositionsResponse); rpc Connect(ConnectRequest) returns (ConnectResponse); rpc SubscribeHeartBeat(SubscribeHeartBeatRequest) returns (stream SubscribeHeartBeatResponse); rpc Disconnect(DisconnectRequest) returns (DisconnectResponse); rpc StartLoginSrp(StartLoginSrpRequest) returns (StartLoginSrpResponse); rpc CompleteLoginSrp(CompleteLoginSrpRequest) returns (CompleteLoginSrpResponse); rpc MultiFactorAuthentication(MultiFactorAuthenticationRequest) returns (MultiFactorAuthenticationResponse); rpc ChangePasswordSRP(ChangePasswordSRPRequest) returns (ChangePasswordSRPResponse); rpc ChangePassword(ChangePasswordRequest) returns (ChangePasswordResponse); rpc GetStrategyList(StrategyListRequest) returns (StrategyListResponse); rpc GetFirmName(GetFirmNameRequest) returns (GetFirmNameResponse); rpc UserExists(UserExistsRequest) returns (UserExistsResponse); rpc GetStrategyData(GetStrategyDataRequest) returns (GetStrategyDataResponse); rpc CreateStrategy(CreateStrategyRequest) returns (CreateStrategyResponse); rpc UpdateStrategy(UpdateStrategyRequest) returns (UpdateStrategyResponse); rpc GetTodaysActivityJson (TodaysActivityJsonRequest) returns (TodaysActivityJsonResponse); rpc GetUserRoutes(GetUserRoutesRequest) returns (GetUserRoutesResponse); rpc GetUserRouteProps(GetUserRoutePropsRequest) returns (GetUserRoutePropsResponse); }