syntax = "proto3"; package gctrpc; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/thrasher-corp/gocryptotrader/gctrpc"; message GetInfoRequest {} message GetInfoResponse { string uptime = 1; int64 available_exchanges = 2; int64 enabled_exchanges = 3; string default_forex_provider = 4; string default_fiat_currency = 5; map subsystem_status = 6; map rpc_endpoints = 7; } message GetCommunicationRelayersRequest {} message CommunicationRelayer { bool enabled = 1; bool connected = 2; } message GetCommunicationRelayersResponse { map communication_relayers = 1; } message GenericSubsystemRequest { string subsystem = 1; } message GetSubsystemsRequest {} message GetSusbsytemsResponse { map subsystems_status = 1; } message GetRPCEndpointsRequest {} message RPCEndpoint { bool started = 1; string listen_address = 2; } message GetRPCEndpointsResponse { map endpoints = 1; } message GenericExchangeNameRequest { string exchange = 1; } message GetExchangesRequest { bool enabled = 1; } message GetExchangesResponse { string exchanges = 1; } message GetExchangeOTPResponse { string otp_code = 1; } message GetExchangeOTPsRequest {} message GetExchangeOTPsResponse { map otp_codes = 1; } message DisableExchangeRequest { string exchange = 1; } message PairsSupported { string available_pairs = 1; string enabled_pairs = 2; } message GetExchangeInfoResponse { string name = 1; bool enabled = 2; bool verbose = 3; bool using_sandbox = 4; string http_timeout = 5; string http_useragent = 6; string http_proxy = 7; string base_currencies = 8; map supported_assets = 9; bool authenticated_api = 10; } message GetTickerRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; } message CurrencyPair { string delimiter = 1; string base = 2; string quote = 3; } message TickerResponse { CurrencyPair pair = 1; int64 last_updated = 2; string currency_pair = 3; double last = 4; double high = 5; double low = 6; double bid = 7; double ask = 8; double volume = 9; double price_ath = 10; } message GetTickersRequest {} message Tickers { string exchange = 1; repeated TickerResponse tickers = 2; } message GetTickersResponse { repeated Tickers tickers = 1; } message GetOrderbookRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; } message OrderbookItem { double amount = 1; double price = 2; int64 id = 3; } message OrderbookResponse { CurrencyPair pair = 1; string currency_pair = 2; repeated OrderbookItem bids = 3; repeated OrderbookItem asks = 4; int64 last_updated = 5; string asset_type = 6; string error = 7; } message GetOrderbooksRequest {} message Orderbooks { string exchange = 1; repeated OrderbookResponse orderbooks = 2; } message GetOrderbooksResponse { repeated Orderbooks orderbooks = 1; } message GetAccountInfoRequest { string exchange = 1; string asset_type = 2; } message Account { string id = 1; repeated AccountCurrencyInfo currencies = 2; } message AccountCurrencyInfo { string currency = 1; double total_value = 2; double hold = 3; double free = 4; double free_without_borrow = 5; double borrowed = 6; google.protobuf.Timestamp updated_at = 7; } message GetAccountInfoResponse { string exchange = 1; repeated Account accounts = 2; } message GetConfigRequest {} message GetConfigResponse { bytes data = 1; } message PortfolioAddress { string address = 1; string coin_type = 2; string description = 3; double balance = 4; } message GetPortfolioRequest {} message GetPortfolioResponse { repeated PortfolioAddress portfolio = 1; } message GetPortfolioSummaryRequest {} message Coin { string coin = 1; double balance = 2; string address = 3; double percentage = 4; } message OfflineCoinSummary { string address = 1; double balance = 2; double percentage = 3; } message OnlineCoinSummary { double balance = 1; double percentage = 2; } message OfflineCoins { repeated OfflineCoinSummary addresses = 1; } message OnlineCoins { map coins = 1; } message GetPortfolioSummaryResponse { repeated Coin coin_totals = 1; repeated Coin coins_offline = 2; map coins_offline_summary = 3; repeated Coin coins_online = 4; map coins_online_summary = 5; } message AddPortfolioAddressRequest { string address = 1; string coin_type = 2; string description = 3; double balance = 4; string supported_exchanges = 5; bool cold_storage = 6; } message RemovePortfolioAddressRequest { string address = 1; string coin_type = 2; string description = 3; } message GetForexProvidersRequest {} message ForexProvider { string name = 1; bool enabled = 2; bool verbose = 3; string rest_polling_delay = 4; string api_key = 5; int64 api_key_level = 6; bool primary_provider = 7; } message GetForexProvidersResponse { repeated ForexProvider forex_providers = 1; } message GetForexRatesRequest {} message ForexRatesConversion { string from = 1; string to = 2; double rate = 3; double inverse_rate = 4; } message GetForexRatesResponse { repeated ForexRatesConversion forex_rates = 1; } message OrderDetails { string exchange = 1; string id = 2; string client_order_id = 3; string base_currency = 4; string quote_currency = 5; string asset_type = 6; string order_side = 7; string order_type = 8; string creation_time = 9; string update_time = 10; string status = 11; double price = 12; double amount = 13; double open_volume = 14; double fee = 15; double cost = 16; repeated TradeHistory trades = 17; double contract_amount = 18; } message TradeHistory { int64 creation_time = 1; string id = 2; double price = 3; double amount = 4; string exchange = 5; string asset_type = 6; string order_side = 7; double fee = 8; double total = 9; } message GetOrdersRequest { string exchange = 1; string asset_type = 2; CurrencyPair pair = 3; string start_date = 4; string end_date = 5; } message GetOrdersResponse { repeated OrderDetails orders = 1; } message GetOrderRequest { string exchange = 1; string order_id = 2; CurrencyPair pair = 3; string asset = 4; } message SubmitOrderRequest { string exchange = 1; CurrencyPair pair = 2; string side = 3; string order_type = 4; double amount = 5; double price = 6; string client_id = 7; string asset_type = 8; string margin_type = 9; } message Trades { double amount = 1; double price = 2; double fee = 3; string fee_asset = 4; } message SubmitOrderResponse { bool order_placed = 1; string order_id = 2; repeated Trades trades = 3; } message SimulateOrderRequest { string exchange = 1; CurrencyPair pair = 2; double amount = 3; string side = 4; string margin_type = 5; } message SimulateOrderResponse { repeated OrderbookItem orders = 1; double amount = 2; double minimum_price = 3; double maximum_price = 4; double percentage_gain_loss = 5; string status = 6; } message WhaleBombRequest { string exchange = 1; CurrencyPair pair = 2; double price_target = 3; string side = 4; string asset_type = 5; } message CancelOrderRequest { string exchange = 1; string account_id = 2; string order_id = 3; CurrencyPair pair = 4; string asset_type = 5; string side = 6; } message CancelBatchOrdersRequest { string exchange = 1; string account_id = 2; string orders_id = 3; CurrencyPair pair = 4; string asset_type = 5; string side = 6; } message Orders { string exchange = 1; map order_status = 2; } message CancelBatchOrdersResponse { repeated Orders orders = 1; } message CancelAllOrdersRequest { string exchange = 1; } message CancelAllOrdersResponse { repeated Orders orders = 1; int64 count = 2; } message GetEventsRequest {} message ConditionParams { string condition = 1; double price = 2; bool check_bids = 3; bool check_asks = 4; double orderbook_amount = 5; } message GetEventsResponse { int64 id = 1; string exchange = 2; string item = 3; ConditionParams condition_params = 4; CurrencyPair pair = 5; string action = 6; bool executed = 7; } message AddEventRequest { string exchange = 1; string item = 2; ConditionParams condition_params = 3; CurrencyPair pair = 4; string asset_type = 5; string action = 6; } message AddEventResponse { int64 id = 1; } message RemoveEventRequest { int64 id = 1; } message GetCryptocurrencyDepositAddressesRequest { string exchange = 1; } message DepositAddress { string address = 1; string tag = 2; string chain = 3; } message DepositAddresses { repeated DepositAddress addresses = 1; } message GetCryptocurrencyDepositAddressesResponse { map addresses = 1; } message GetCryptocurrencyDepositAddressRequest { string exchange = 1; string cryptocurrency = 2; string chain = 3; bool bypass = 4; } message GetCryptocurrencyDepositAddressResponse { string address = 1; string tag = 2; } message GetAvailableTransferChainsRequest { string exchange = 1; string cryptocurrency = 2; } message GetAvailableTransferChainsResponse { repeated string chains = 1; } message WithdrawFiatRequest { string exchange = 1; string currency = 2; double amount = 3; string description = 4; string bank_account_id = 5; } message WithdrawCryptoRequest { string exchange = 1; string address = 2; string address_tag = 3; string currency = 4; double amount = 5; double fee = 6; string description = 7; string chain = 8; } message WithdrawResponse { string id = 1; string status = 2; } message WithdrawalEventByIDRequest { string id = 1; } message WithdrawalEventByIDResponse { WithdrawalEventResponse event = 2; } message WithdrawalEventsByExchangeRequest { string exchange = 1; string id = 2; int32 limit = 3; string currency = 4; string asset_type = 5; } message WithdrawalEventsByDateRequest { string exchange = 1; string start = 2; string end = 3; int32 limit = 4; } message WithdrawalEventsByExchangeResponse { repeated WithdrawalEventResponse event = 2; } message WithdrawalEventResponse { string id = 2; WithdrawlExchangeEvent exchange = 3; WithdrawalRequestEvent request = 4; google.protobuf.Timestamp created_at = 5; google.protobuf.Timestamp updated_at = 6; } message WithdrawlExchangeEvent { string name = 1; string id = 2; string status = 3; } message WithdrawalRequestEvent { string currency = 2; string description = 3; double amount = 4; int64 type = 5; FiatWithdrawalEvent fiat = 6; CryptoWithdrawalEvent crypto = 7; } message FiatWithdrawalEvent { string bank_name = 1; string account_name = 2; string account_number = 3; string bsb = 4; string swift = 5; string iban = 6; } message CryptoWithdrawalEvent { string address = 1; string address_tag = 2; double fee = 3; string tx_id = 4; } message GetLoggerDetailsRequest { string logger = 1; } message GetLoggerDetailsResponse { bool info = 1; bool debug = 2; bool warn = 3; bool error = 4; } message SetLoggerDetailsRequest { string logger = 1; string level = 2; } message GetExchangePairsRequest { string exchange = 1; string asset = 2; } message GetExchangePairsResponse { map supported_assets = 1; } message SetExchangePairRequest { string exchange = 1; string asset_type = 2; repeated CurrencyPair pairs = 3; bool enable = 4; } message GetOrderbookStreamRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; } message GetExchangeOrderbookStreamRequest { string exchange = 1; } message GetTickerStreamRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; } message GetExchangeTickerStreamRequest { string exchange = 1; } message GetAuditEventRequest { string start_date = 1; string end_date = 2; string order_by = 3; int32 limit = 4; int32 offset = 5; } message GetAuditEventResponse { repeated AuditEvent events = 1; } message GetSavedTradesRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; string start = 4; string end = 5; } message SavedTrades { double price = 1; double amount = 2; string side = 3; string timestamp = 4; string trade_id = 5; } message SavedTradesResponse { string exchange_name = 1; string asset = 2; CurrencyPair pair = 3; repeated SavedTrades trades = 4; } message ConvertTradesToCandlesRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; string start = 4; string end = 5; int64 time_interval = 6; bool sync = 7; bool force = 8; } message GetHistoricCandlesRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; string start = 4; string end = 5; int64 time_interval = 6; bool ex_request = 7; bool sync = 8; bool use_db = 9; bool fill_missing_with_trades = 10; bool force = 11; } message GetHistoricCandlesResponse { string exchange = 1; CurrencyPair pair = 2; string start = 3; string end = 4; string interval = 6; repeated Candle candle = 5; } message Candle { string time = 1; double low = 2; double high = 3; double open = 4; double close = 5; double volume = 6; bool is_partial = 7; } message AuditEvent { string type = 1; string identifier = 2; string message = 3; string timestamp = 4; } message GCTScript { string uuid = 1; string name = 2; string path = 3; string next_run = 4; } message GCTScriptExecuteRequest { GCTScript script = 1; } message GCTScriptStopRequest { GCTScript script = 1; } message GCTScriptStopAllRequest {} message GCTScriptStatusRequest {} message GCTScriptListAllRequest {} message GCTScriptUploadRequest { string script_name = 1; string script_data = 2; bytes data = 3; bool archived = 4; bool overwrite = 5; } message GCTScriptReadScriptRequest { GCTScript script = 1; } message GCTScriptQueryRequest { GCTScript script = 1; } message GCTScriptAutoLoadRequest { string script = 1; bool status = 2; } message GCTScriptStatusResponse { string status = 1; repeated GCTScript scripts = 2; } message GCTScriptQueryResponse { string status = 1; GCTScript script = 2; string data = 3; } message GenericResponse { string status = 1; string data = 2; } message SetExchangeAssetRequest { string exchange = 1; string asset = 2; bool enable = 3; } message SetExchangeAllPairsRequest { string exchange = 1; bool enable = 2; } message UpdateExchangeSupportedPairsRequest { string exchange = 1; } message GetExchangeAssetsRequest { string exchange = 1; } message GetExchangeAssetsResponse { string assets = 1; } message WebsocketGetInfoRequest { string exchange = 1; } message WebsocketGetInfoResponse { string exchange = 1; bool supported = 2; bool enabled = 3; bool authenticated_supported = 4; bool authenticated = 5; string running_url = 6; string proxy_address = 7; } message WebsocketSetEnabledRequest { string exchange = 1; bool enable = 2; } message WebsocketGetSubscriptionsRequest { string exchange = 1; } message WebsocketSubscription { string channel = 1; string pairs = 2; string asset = 3; string params = 4; } message WebsocketGetSubscriptionsResponse { string exchange = 1; repeated WebsocketSubscription subscriptions = 2; } message WebsocketSetProxyRequest { string exchange = 1; string proxy = 2; } message WebsocketSetURLRequest { string exchange = 1; string url = 2; } message FindMissingCandlePeriodsRequest { string exchange_name = 1; string asset_type = 2; CurrencyPair pair = 3; int64 interval = 4; string start = 5; string end = 6; } message FindMissingTradePeriodsRequest { string exchange_name = 1; string asset_type = 2; CurrencyPair pair = 3; string start = 4; string end = 5; } message FindMissingIntervalsResponse { string exchange_name = 1; string asset_type = 2; CurrencyPair pair = 3; repeated string missing_periods = 4; string status = 5; } message SetExchangeTradeProcessingRequest { string exchange = 1; bool status = 2; } message UpsertDataHistoryJobRequest { string nickname = 1; string exchange = 2; string asset = 3; CurrencyPair pair = 4; string start_date = 5; string end_date = 6; int64 interval = 7; uint64 request_size_limit = 8; int64 data_type = 9; uint64 max_retry_attempts = 10; uint64 batch_size = 11; bool insert_only = 12; int64 conversion_interval = 13; bool overwrite_existing_data = 14; string prerequisite_job_nickname = 15; uint64 decimal_place_comparison = 16; string secondary_exchange_name = 17; double issue_tolerance_percentage = 18; bool replace_on_issue = 19; } message InsertSequentialJobsRequest { repeated UpsertDataHistoryJobRequest jobs = 1; } message InsertSequentialJobsResponse { repeated UpsertDataHistoryJobResponse jobs = 1; } message UpsertDataHistoryJobResponse { string message = 1; string job_id = 2; } message GetDataHistoryJobDetailsRequest { string id = 1; string nickname = 2; bool full_details = 3; } message DataHistoryJob { string id = 1; string nickname = 2; string exchange = 3; string asset = 4; CurrencyPair pair = 5; string start_date = 6; string end_date = 7; int64 interval = 8; uint64 request_size_limit = 9; uint64 max_retry_attempts = 10; uint64 batch_size = 11; string status = 12; string data_type = 13; int64 conversion_interval = 14; bool overwrite_existing_data = 15; string prerequisite_job_nickname = 16; uint64 decimal_place_comparison = 17; string secondary_exchange_name = 18; double issue_tolerance_percentage = 19; bool replace_on_issue = 20; repeated DataHistoryJobResult job_results = 21; repeated string result_summaries = 22; } message DataHistoryJobResult { string start_date = 1; string end_date = 2; bool has_data = 3; string message = 4; string run_date = 5; } message DataHistoryJobs { repeated DataHistoryJob results = 1; } message GetDataHistoryJobsBetweenRequest { string start_date = 1; string end_date = 2; } message SetDataHistoryJobStatusRequest { string id = 1; string nickname = 2; int64 status = 3; } message UpdateDataHistoryJobPrerequisiteRequest { string nickname = 1; string prerequisite_job_nickname = 2; } message ModifyOrderRequest { string exchange = 1; string order_id = 2; CurrencyPair pair = 3; string asset = 4; double amount = 5; double price = 6; } message ModifyOrderResponse { string modified_order_id = 1; } message CurrencyStateGetAllRequest { string exchange = 1; } message CurrencyStateTradingRequest { string exchange = 1; string code = 2; string asset = 3; } message CurrencyStateTradingPairRequest { string exchange = 1; string pair = 2; string asset = 3; } message CurrencyStateWithdrawRequest { string exchange = 1; string code = 2; string asset = 3; } message CurrencyStateDepositRequest { string exchange = 1; string code = 2; string asset = 3; } message CurrencyStateResponse { repeated CurrencyState currency_states = 1; } message CurrencyState { string currency = 1; string asset = 2; bool withdraw_enabled = 3; bool deposit_enabled = 4; bool trading_enabled = 5; } message FundingRate { string date = 1; string rate = 2; string payment = 3; } message FundingData { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string payment_currency = 4; string start_date = 5; string end_date = 6; repeated FundingRate rates = 7; FundingRate latest_rate = 8; FundingRate upcoming_rate = 9; string payment_sum = 10; string payment_message = 11; string time_of_next_rate = 12; } message FuturesPositionStats { string maintenance_margin_requirement = 1; string initial_margin_requirement = 2; string estimated_liquidation_price = 3; string collateral_used = 4; string mark_price = 5; string current_size = 6; string contract_size = 7; string contract_multiplier = 8; string contract_settlement_type = 9; string break_even_price = 10; string average_open_price = 11; string recent_pnl = 12; string margin_fraction = 13; string free_collateral = 14; string total_collateral = 15; string frozen_balance = 16; string equity_of_currency = 17; string available_equity = 18; string cash_balance = 19; string discount_equity = 20; string equity_usd = 21; string isolated_equity = 22; string isolated_liabilities = 23; string isolated_upl = 24; string notional_leverage = 25; string total_equity = 26; string strategy_equity = 27; } message FuturePosition { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string status = 4; string opening_date = 5; string opening_direction = 6; string opening_price = 7; string opening_size = 8; string current_direction = 9; string current_price = 10; string current_size = 11; string unrealised_pnl = 12; string realised_pnl = 13; string closing_date = 14; int64 order_count = 15; string contract_settlement_type = 16; repeated OrderDetails orders = 17; FuturesPositionStats position_stats = 18; FundingData funding_data = 19; } message GetManagedPositionRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; bool include_full_order_data = 4; bool get_funding_payments = 5; bool include_full_funding_rates = 6; bool include_predicted_rate = 7; } message GetAllManagedPositionsRequest { bool include_full_order_data = 1; bool get_funding_payments = 2; bool include_full_funding_rates = 3; bool include_predicted_rate = 4; } message GetManagedPositionsResponse { repeated FuturePosition positions = 1; } message GetFuturesPositionsSummaryRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; } message GetFuturesPositionsSummaryResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; FuturesPositionStats position_stats = 4; } message GetFuturesPositionsOrdersRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; string start_date = 5; string end_date = 6; bool respect_order_history_limits = 7; bool sync_with_order_manager = 8; } message GetFuturesPositionsOrdersResponse { repeated FuturePosition positions = 6; } message GetCollateralModeRequest { string exchange = 1; string asset = 2; } message GetCollateralModeResponse { string exchange = 1; string asset = 2; string collateral_mode = 3; } message SetCollateralModeRequest { string exchange = 1; string asset = 2; string collateral_mode = 3; } message SetCollateralModeResponse { string exchange = 1; string asset = 2; bool success = 3; } message GetMarginTypeRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; } message GetMarginTypeResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string margin_type = 4; } message ChangePositionMarginRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string margin_type = 4; double original_allocated_margin = 5; double new_allocated_margin = 6; string margin_side = 7; } message ChangePositionMarginResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string margin_type = 4; double new_allocated_margin = 5; string margin_side = 6; } message SetMarginTypeRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string margin_type = 4; } message SetMarginTypeResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; bool success = 4; } message GetLeverageRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; string margin_type = 5; string order_side = 6; } message GetLeverageResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; string margin_type = 5; double leverage = 6; string order_side = 7; } message SetLeverageRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; string margin_type = 5; double leverage = 6; string order_side = 7; } message SetLeverageResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; CurrencyPair underlying_pair = 4; string margin_type = 5; string order_side = 6; bool success = 7; } message GetCollateralRequest { string exchange = 1; string asset = 2; bool include_breakdown = 3; bool calculate_offline = 4; bool include_zero_values = 5; } message GetCollateralResponse { string sub_account = 1; string collateral_currency = 2; string total_value_of_positive_spot_balances = 3; string collateral_contributed_by_positive_spot_balances = 4; string used_collateral = 5; CollateralUsedBreakdown used_breakdown = 6; string available_collateral = 7; string maintenance_collateral = 8; string unrealised_pnl = 9; repeated CollateralForCurrency currency_breakdown = 10; repeated CollateralByPosition position_breakdown = 11; } message CollateralForCurrency { string currency = 1; bool excluded_from_collateral = 2; string total_funds = 3; string available_for_use_as_collateral = 4; string approx_fair_market_value = 5; string weighting = 6; string collateral_contribution = 7; string scaled_to_currency = 8; string unrealised_pnl = 9; string funds_in_use = 10; string additional_collateral_used = 11; CollateralUsedBreakdown used_breakdown = 12; string error = 13; } message CollateralByPosition { string currency = 1; string size = 2; string open_order_size = 3; string position_size = 4; string mark_price = 5; string required_margin = 6; string total_collateral_used = 7; } message CollateralUsedBreakdown { string locked_in_stakes = 1; string locked_in_nft_bids = 2; string locked_in_fee_voucher = 3; string locked_in_spot_margin_funding_offers = 4; string locked_in_spot_orders = 5; string locked_as_collateral = 6; string used_in_futures = 7; string used_in_spot_margin = 8; } message GetFundingRatesRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; string start_date = 4; string end_date = 5; string payment_currency = 6; bool include_predicted = 7; bool include_payments = 8; bool respect_history_limits = 9; } message GetFundingRatesResponse { FundingData rates = 1; } message GetLatestFundingRateRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; bool include_predicted = 4; } message GetLatestFundingRateResponse { FundingData rate = 1; } message ShutdownRequest {} message ShutdownResponse {} message GetTechnicalAnalysisRequest { string exchange = 1; CurrencyPair pair = 2; string asset_type = 3; string algorithm_type = 4; int64 interval = 5; google.protobuf.Timestamp start = 6; google.protobuf.Timestamp end = 7; int64 period = 8; int64 fast_period = 9; int64 slow_period = 10; double standard_deviation_up = 11; double standard_deviation_down = 12; int64 moving_average_type = 13; string other_exchange = 14; CurrencyPair other_pair = 15; string other_asset_type = 16; } message ListOfSignals { repeated double signals = 1; } message GetTechnicalAnalysisResponse { map signals = 1; } message GetMarginRatesHistoryRequest { string exchange = 1; string asset = 2; string currency = 3; string start_date = 4; string end_date = 5; bool get_predicted_rate = 6; bool get_lending_payments = 7; bool get_borrow_rates = 8; bool get_borrow_costs = 9; bool include_all_rates = 10; bool calculate_offline = 11; string taker_fee_rate = 12; repeated MarginRate rates = 13; } message LendingPayment { string payment = 1; string size = 2; } message BorrowCost { string cost = 1; string size = 2; } message MarginRate { string time = 1; string market_borrow_size = 2; string hourly_rate = 3; string yearly_rate = 4; string hourly_borrow_rate = 5; string yearly_borrow_rate = 6; LendingPayment lending_payment = 7; BorrowCost borrow_cost = 8; } message GetMarginRatesHistoryResponse { repeated MarginRate rates = 1; int64 total_rates = 2; string sum_borrow_costs = 3; string avg_borrow_size = 4; string sum_lending_payments = 5; string avg_lending_size = 6; MarginRate latest_rate = 7; MarginRate predicted_rate = 8; string taker_fee_rate = 9; } message GetOrderbookMovementRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; double amount = 6; bool sell = 7; bool requires_rest_orderbook = 8; bool purchase = 9; } message GetOrderbookMovementResponse { double nominal_percentage = 1; double impact_percentage = 2; double slippage_cost = 3; string currency_bought = 4; double bought = 5; string currency_sold = 6; double sold = 7; string side_affected = 8; string update_protocol = 9; bool full_orderbook_side_consumed = 10; double start_price = 11; double end_price = 12; bool no_slippage_occurred = 13; double average_order_cost = 14; } message GetOrderbookAmountByNominalRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; double nominal_percentage = 6; bool sell = 7; bool requires_rest_orderbook = 8; } message GetOrderbookAmountByNominalResponse { double amount_required = 1; string currency_selling = 2; double amount_received = 3; string currency_buying = 4; double start_price = 5; double end_price = 6; double average_order_cost = 7; string side_affected = 8; double approximate_nominal_slippage_percentage = 9; string update_protocol = 10; bool full_orderbook_side_consumed = 11; } message GetOrderbookAmountByImpactRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; double impact_percentage = 6; bool sell = 7; bool requires_rest_orderbook = 8; } message GetOrderbookAmountByImpactResponse { double amount_required = 1; string currency_selling = 2; double amount_received = 3; string currency_buying = 4; double start_price = 5; double end_price = 6; double average_order_cost = 7; string side_affected = 8; double approximate_impact_slippage_percentage = 9; string update_protocol = 10; bool full_orderbook_side_consumed = 11; } message GetOpenInterestRequest { string exchange = 1; repeated OpenInterestDataRequest data = 2; } message OpenInterestDataRequest { string asset = 1; CurrencyPair pair = 2; } message GetOpenInterestResponse { repeated OpenInterestDataResponse data = 1; } message OpenInterestDataResponse { string exchange = 1; string asset = 2; CurrencyPair pair = 3; double open_interest = 4; } message GetCurrencyTradeURLRequest { string exchange = 1; string asset = 2; CurrencyPair pair = 3; } message GetCurrencyTradeURLResponse { string url = 1; } service GoCryptoTraderService { rpc GetInfo(GetInfoRequest) returns (GetInfoResponse) { option (google.api.http) = {get: "/v1/getinfo"}; } rpc GetSubsystems(GetSubsystemsRequest) returns (GetSusbsytemsResponse) { option (google.api.http) = {get: "/v1/getsubsystems"}; } rpc EnableSubsystem(GenericSubsystemRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/enablesubsystem"}; } rpc DisableSubsystem(GenericSubsystemRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/disablesubsystem"}; } rpc GetRPCEndpoints(GetRPCEndpointsRequest) returns (GetRPCEndpointsResponse) { option (google.api.http) = {get: "/v1/getrpcendpoints"}; } rpc GetCommunicationRelayers(GetCommunicationRelayersRequest) returns (GetCommunicationRelayersResponse) { option (google.api.http) = {get: "/v1/getcommunicationrelayers"}; } rpc GetExchanges(GetExchangesRequest) returns (GetExchangesResponse) { option (google.api.http) = {get: "/v1/getexchanges"}; } rpc DisableExchange(GenericExchangeNameRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/disableexchange" body: "*" }; } rpc GetExchangeInfo(GenericExchangeNameRequest) returns (GetExchangeInfoResponse) { option (google.api.http) = {get: "/v1/getexchangeinfo"}; } rpc GetExchangeOTPCode(GenericExchangeNameRequest) returns (GetExchangeOTPResponse) { option (google.api.http) = {get: "/v1/getexchangeotp"}; } rpc GetExchangeOTPCodes(GetExchangeOTPsRequest) returns (GetExchangeOTPsResponse) { option (google.api.http) = {get: "/v1/getexchangeotps"}; } rpc EnableExchange(GenericExchangeNameRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/enableexchange" body: "*" }; } rpc GetTicker(GetTickerRequest) returns (TickerResponse) { option (google.api.http) = { post: "/v1/getticker" body: "*" }; } rpc GetTickers(GetTickersRequest) returns (GetTickersResponse) { option (google.api.http) = {get: "/v1/gettickers"}; } rpc GetOrderbook(GetOrderbookRequest) returns (OrderbookResponse) { option (google.api.http) = { post: "/v1/getorderbook" body: "*" }; } rpc GetOrderbooks(GetOrderbooksRequest) returns (GetOrderbooksResponse) { option (google.api.http) = {get: "/v1/getorderbooks"}; } rpc GetAccountInfo(GetAccountInfoRequest) returns (GetAccountInfoResponse) { option (google.api.http) = {get: "/v1/getaccountinfo"}; } rpc UpdateAccountInfo(GetAccountInfoRequest) returns (GetAccountInfoResponse) { option (google.api.http) = {get: "/v1/updateaccountinfo"}; } rpc GetAccountInfoStream(GetAccountInfoRequest) returns (stream GetAccountInfoResponse) { option (google.api.http) = {get: "/v1/getaccountinfostream"}; } rpc GetConfig(GetConfigRequest) returns (GetConfigResponse) { option (google.api.http) = {get: "/v1/getconfig"}; } rpc GetPortfolio(GetPortfolioRequest) returns (GetPortfolioResponse) { option (google.api.http) = {get: "/v1/getportfolio"}; } rpc GetPortfolioSummary(GetPortfolioSummaryRequest) returns (GetPortfolioSummaryResponse) { option (google.api.http) = {get: "/v1/getportfoliosummary"}; } rpc AddPortfolioAddress(AddPortfolioAddressRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/addportfolioaddress" body: "*" }; } rpc RemovePortfolioAddress(RemovePortfolioAddressRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/removeportfolioaddress" body: "*" }; } rpc GetForexProviders(GetForexProvidersRequest) returns (GetForexProvidersResponse) { option (google.api.http) = {get: "/v1/getforexproviders"}; } rpc GetForexRates(GetForexRatesRequest) returns (GetForexRatesResponse) { option (google.api.http) = {get: "/v1/getforexrates"}; } rpc GetOrders(GetOrdersRequest) returns (GetOrdersResponse) { option (google.api.http) = { post: "/v1/getorders" body: "*" }; } rpc GetOrder(GetOrderRequest) returns (OrderDetails) { option (google.api.http) = { post: "/v1/getorder" body: "*" }; } rpc SubmitOrder(SubmitOrderRequest) returns (SubmitOrderResponse) { option (google.api.http) = { post: "/v1/submitorder" body: "*" }; } rpc SimulateOrder(SimulateOrderRequest) returns (SimulateOrderResponse) { option (google.api.http) = { post: "/v1/simulateorder" body: "*" }; } rpc WhaleBomb(WhaleBombRequest) returns (SimulateOrderResponse) { option (google.api.http) = { post: "/v1/whalebomb" body: "*" }; } rpc CancelOrder(CancelOrderRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/cancelorder" body: "*" }; } rpc CancelBatchOrders(CancelBatchOrdersRequest) returns (CancelBatchOrdersResponse) { option (google.api.http) = { post: "/v1/cancelbatchorders" body: "*" }; } rpc CancelAllOrders(CancelAllOrdersRequest) returns (CancelAllOrdersResponse) { option (google.api.http) = { post: "/v1/cancelallorders" body: "*" }; } rpc GetEvents(GetEventsRequest) returns (GetEventsResponse) { option (google.api.http) = {get: "/v1/getevents"}; } rpc AddEvent(AddEventRequest) returns (AddEventResponse) { option (google.api.http) = { post: "/v1/addevent" body: "*" }; } rpc RemoveEvent(RemoveEventRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/removeevent" body: "*" }; } rpc GetCryptocurrencyDepositAddresses(GetCryptocurrencyDepositAddressesRequest) returns (GetCryptocurrencyDepositAddressesResponse) { option (google.api.http) = { post: "/v1/getcryptodepositaddresses" body: "*" }; } rpc GetCryptocurrencyDepositAddress(GetCryptocurrencyDepositAddressRequest) returns (GetCryptocurrencyDepositAddressResponse) { option (google.api.http) = { post: "/v1/getcryptodepositaddress" body: "*" }; } rpc GetAvailableTransferChains(GetAvailableTransferChainsRequest) returns (GetAvailableTransferChainsResponse) { option (google.api.http) = { post: "/v1/getavailabletransferchains" body: "*" }; } rpc WithdrawFiatFunds(WithdrawFiatRequest) returns (WithdrawResponse) { option (google.api.http) = { post: "/v1/withdrawfiatfunds" body: "*" }; } rpc WithdrawCryptocurrencyFunds(WithdrawCryptoRequest) returns (WithdrawResponse) { option (google.api.http) = { post: "/v1/withdrawithdrawcryptofundswfiatfunds" body: "*" }; } rpc WithdrawalEventByID(WithdrawalEventByIDRequest) returns (WithdrawalEventByIDResponse) { option (google.api.http) = { post: "/v1/withdrawaleventbyid" body: "*" }; } rpc WithdrawalEventsByExchange(WithdrawalEventsByExchangeRequest) returns (WithdrawalEventsByExchangeResponse) { option (google.api.http) = { post: "/v1/withdrawaleventbyexchange" body: "*" }; } rpc WithdrawalEventsByDate(WithdrawalEventsByDateRequest) returns (WithdrawalEventsByExchangeResponse) { option (google.api.http) = { post: "/v1/withdrawaleventbydate" body: "*" }; } rpc GetLoggerDetails(GetLoggerDetailsRequest) returns (GetLoggerDetailsResponse) { option (google.api.http) = {get: "/v1/getloggerdetails"}; } rpc SetLoggerDetails(SetLoggerDetailsRequest) returns (GetLoggerDetailsResponse) { option (google.api.http) = { post: "/v1/setloggerdetails" body: "*" }; } rpc GetExchangePairs(GetExchangePairsRequest) returns (GetExchangePairsResponse) { option (google.api.http) = { post: "/v1/getexchangepairs" body: "*" }; } rpc SetExchangePair(SetExchangePairRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/setexchangepair" body: "*" }; } rpc GetOrderbookStream(GetOrderbookStreamRequest) returns (stream OrderbookResponse) { option (google.api.http) = {get: "/v1/getorderbookstream"}; } rpc GetExchangeOrderbookStream(GetExchangeOrderbookStreamRequest) returns (stream OrderbookResponse) { option (google.api.http) = {get: "/v1/getexchangeorderbookstream"}; } rpc GetTickerStream(GetTickerStreamRequest) returns (stream TickerResponse) { option (google.api.http) = {get: "/v1/gettickerstream"}; } rpc GetExchangeTickerStream(GetExchangeTickerStreamRequest) returns (stream TickerResponse) { option (google.api.http) = {get: "/v1/getexchangetickerstream"}; } rpc GetAuditEvent(GetAuditEventRequest) returns (GetAuditEventResponse) { option (google.api.http) = {get: "/v1/getauditevent"}; } rpc GCTScriptExecute(GCTScriptExecuteRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/gctscript/execute"}; } rpc GCTScriptUpload(GCTScriptUploadRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/gctscript/upload" body: "*" }; } rpc GCTScriptReadScript(GCTScriptReadScriptRequest) returns (GCTScriptQueryResponse) { option (google.api.http) = { post: "/v1/gctscript/read" body: "*" }; } rpc GCTScriptStatus(GCTScriptStatusRequest) returns (GCTScriptStatusResponse) { option (google.api.http) = {get: "/v1/gctscript/status"}; } rpc GCTScriptQuery(GCTScriptQueryRequest) returns (GCTScriptQueryResponse) { option (google.api.http) = {get: "/v1/gctscript/query"}; } rpc GCTScriptStop(GCTScriptStopRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/gctscript/stop" body: "*" }; } rpc GCTScriptStopAll(GCTScriptStopAllRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/gctscript/stopall" body: "*" }; } rpc GCTScriptListAll(GCTScriptListAllRequest) returns (GCTScriptStatusResponse) { option (google.api.http) = { post: "/v1/gctscript/list" body: "*" }; } rpc GCTScriptAutoLoadToggle(GCTScriptAutoLoadRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/gctscript/autoload" body: "*" }; } rpc GetHistoricCandles(GetHistoricCandlesRequest) returns (GetHistoricCandlesResponse) { option (google.api.http) = {get: "/v1/gethistoriccandles"}; } rpc SetExchangeAsset(SetExchangeAssetRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/setexchangeasset"}; } rpc SetAllExchangePairs(SetExchangeAllPairsRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/setallexchangepairs"}; } rpc UpdateExchangeSupportedPairs(UpdateExchangeSupportedPairsRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/updateexchangesupportedpairs"}; } rpc GetExchangeAssets(GetExchangeAssetsRequest) returns (GetExchangeAssetsResponse) { option (google.api.http) = {get: "/v1/getexchangeassets"}; } rpc WebsocketGetInfo(WebsocketGetInfoRequest) returns (WebsocketGetInfoResponse) { option (google.api.http) = {get: "/v1/websocketgetinfo"}; } rpc WebsocketSetEnabled(WebsocketSetEnabledRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/websocketsetenabled"}; } rpc WebsocketGetSubscriptions(WebsocketGetSubscriptionsRequest) returns (WebsocketGetSubscriptionsResponse) { option (google.api.http) = {get: "/v1/websocketgetsubscriptions"}; } rpc WebsocketSetProxy(WebsocketSetProxyRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/websocketsetproxy"}; } rpc WebsocketSetURL(WebsocketSetURLRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/websocketseturl"}; } rpc GetRecentTrades(GetSavedTradesRequest) returns (SavedTradesResponse) { option (google.api.http) = {get: "/v1/getrecenttrades"}; } rpc GetHistoricTrades(GetSavedTradesRequest) returns (stream SavedTradesResponse) { option (google.api.http) = {get: "/v1/gethistorictrades"}; } rpc GetSavedTrades(GetSavedTradesRequest) returns (SavedTradesResponse) { option (google.api.http) = {get: "/v1/getsavedtrades"}; } rpc ConvertTradesToCandles(ConvertTradesToCandlesRequest) returns (GetHistoricCandlesResponse) { option (google.api.http) = {get: "/v1/converttradestocandles"}; } rpc FindMissingSavedCandleIntervals(FindMissingCandlePeriodsRequest) returns (FindMissingIntervalsResponse) { option (google.api.http) = {get: "/v1/findmissingsavedcandleintervals"}; } rpc FindMissingSavedTradeIntervals(FindMissingTradePeriodsRequest) returns (FindMissingIntervalsResponse) { option (google.api.http) = {get: "/v1/findmissingsavedtradeintervals"}; } rpc SetExchangeTradeProcessing(SetExchangeTradeProcessingRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/setexchangetradeprocessing"}; } rpc UpsertDataHistoryJob(UpsertDataHistoryJobRequest) returns (UpsertDataHistoryJobResponse) { option (google.api.http) = { post: "/v1/upsertdatahistoryjob" body: "*" }; } rpc GetDataHistoryJobDetails(GetDataHistoryJobDetailsRequest) returns (DataHistoryJob) { option (google.api.http) = {get: "/v1/getdatahistoryjobdetails"}; } rpc GetActiveDataHistoryJobs(GetInfoRequest) returns (DataHistoryJobs) { option (google.api.http) = {get: "/v1/getactivedatahistoryjobs"}; } rpc GetDataHistoryJobsBetween(GetDataHistoryJobsBetweenRequest) returns (DataHistoryJobs) { option (google.api.http) = {get: "/v1/getdatahistoryjobsbetween"}; } rpc GetDataHistoryJobSummary(GetDataHistoryJobDetailsRequest) returns (DataHistoryJob) { option (google.api.http) = {get: "/v1/getdatahistoryjobsummary"}; } rpc SetDataHistoryJobStatus(SetDataHistoryJobStatusRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/setdatahistoryjobstatus" body: "*" }; } rpc UpdateDataHistoryJobPrerequisite(UpdateDataHistoryJobPrerequisiteRequest) returns (GenericResponse) { option (google.api.http) = { post: "/v1/updatedatahistoryjobprerequisite" body: "*" }; } rpc GetManagedOrders(GetOrdersRequest) returns (GetOrdersResponse) { option (google.api.http) = { post: "/v1/getmanagedorders" body: "*" }; } rpc ModifyOrder(ModifyOrderRequest) returns (ModifyOrderResponse) { option (google.api.http) = {get: "/v1/modifyorder"}; } rpc CurrencyStateGetAll(CurrencyStateGetAllRequest) returns (CurrencyStateResponse) { option (google.api.http) = {get: "/v1/currencystategetall"}; } rpc CurrencyStateTrading(CurrencyStateTradingRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/currencystatetrading"}; } rpc CurrencyStateDeposit(CurrencyStateDepositRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/currencystatedeposit"}; } rpc CurrencyStateWithdraw(CurrencyStateWithdrawRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/currencystatewithdraw"}; } rpc CurrencyStateTradingPair(CurrencyStateTradingPairRequest) returns (GenericResponse) { option (google.api.http) = {get: "/v1/currencystatetradingpair"}; } rpc GetFuturesPositionsSummary(GetFuturesPositionsSummaryRequest) returns (GetFuturesPositionsSummaryResponse) { option (google.api.http) = {get: "/v1/getfuturespositionssummary"}; } rpc GetFuturesPositionsOrders(GetFuturesPositionsOrdersRequest) returns (GetFuturesPositionsOrdersResponse) { option (google.api.http) = {get: "/v1/getfuturespositionsorders"}; } rpc GetCollateral(GetCollateralRequest) returns (GetCollateralResponse) { option (google.api.http) = {get: "/v1/getcollateral"}; } rpc Shutdown(ShutdownRequest) returns (ShutdownResponse) { option (google.api.http) = {get: "/v1/shutdown"}; } rpc GetTechnicalAnalysis(GetTechnicalAnalysisRequest) returns (GetTechnicalAnalysisResponse) { option (google.api.http) = {get: "/v1/gettechnicalanalysis"}; } rpc GetMarginRatesHistory(GetMarginRatesHistoryRequest) returns (GetMarginRatesHistoryResponse) { option (google.api.http) = {get: "/v1/getmarginrateshistory"}; } rpc GetManagedPosition(GetManagedPositionRequest) returns (GetManagedPositionsResponse) { option (google.api.http) = {get: "/v1/getmanagedposition"}; } rpc GetAllManagedPositions(GetAllManagedPositionsRequest) returns (GetManagedPositionsResponse) { option (google.api.http) = {get: "/v1/getallmanagedpositions"}; } rpc GetFundingRates(GetFundingRatesRequest) returns (GetFundingRatesResponse) { option (google.api.http) = {get: "/v1/getfundingrates"}; } rpc GetLatestFundingRate(GetLatestFundingRateRequest) returns (GetLatestFundingRateResponse) { option (google.api.http) = {get: "/v1/getlatestfundingrate"}; } rpc GetOrderbookMovement(GetOrderbookMovementRequest) returns (GetOrderbookMovementResponse) { option (google.api.http) = {get: "/v1/getorderbookmovement"}; } rpc GetOrderbookAmountByNominal(GetOrderbookAmountByNominalRequest) returns (GetOrderbookAmountByNominalResponse) { option (google.api.http) = {get: "/v1/getorderbookamountbynominal"}; } rpc GetOrderbookAmountByImpact(GetOrderbookAmountByImpactRequest) returns (GetOrderbookAmountByImpactResponse) { option (google.api.http) = {get: "/v1/getorderbookamountbyimpact"}; } rpc GetCollateralMode(GetCollateralModeRequest) returns (GetCollateralModeResponse) { option (google.api.http) = {get: "/v1/getcollateralmode"}; } rpc GetLeverage(GetLeverageRequest) returns (GetLeverageResponse) { option (google.api.http) = {get: "/v1/getleverage"}; } rpc SetCollateralMode(SetCollateralModeRequest) returns (SetCollateralModeResponse) { option (google.api.http) = { post: "/v1/getcollateralmode" body: "*" }; } rpc SetMarginType(SetMarginTypeRequest) returns (SetMarginTypeResponse) { option (google.api.http) = { post: "/v1/getmargintype" body: "*" }; } rpc SetLeverage(SetLeverageRequest) returns (SetLeverageResponse) { option (google.api.http) = { post: "/v1/getleverage" body: "*" }; } rpc ChangePositionMargin(ChangePositionMarginRequest) returns (ChangePositionMarginResponse) { option (google.api.http) = { post: "/v1/changepositionmargin" body: "*" }; } rpc GetOpenInterest(GetOpenInterestRequest) returns (GetOpenInterestResponse) { option (google.api.http) = {get: "/v1/getopeninterest"}; } rpc GetCurrencyTradeURL(GetCurrencyTradeURLRequest) returns (GetCurrencyTradeURLResponse) { option (google.api.http) = {get: "/v1/getcurrencytradeurl"}; } }