# ProBit Exchange Specification # # Auto-generated by: mix ccxt.extract probit # CCXT version: 4.5.34 # Spec format version: 1 # # Review before use: # - signing: Detected from sign() method, verify with testnet # - endpoints: Raw paths extracted, map to unified API as needed # - exceptions: Extracted (exact, broad, HTTP status codes) # - features/options: Extracted from describe() # - classification: Set to :supported initially, promote after validation # %{ api_param_requirements: nil, certified: false, classification: :pro, comment: nil, countries: [ "SC", "KR" ], currencies: %{}, currency_aliases: %{ "BB" => "Baby Bali", "BCHSV" => "BSV", "CBC" => "CryptoBharatCoin", "CTK" => "Cryptyk", "CTT" => "Castweet", "DKT" => "DAKOTA", "EGC" => "EcoG9coin", "EPS" => "Epanus", "FX" => "Fanzy", "GM" => "GM Holding", "GOGOL" => "GOL", "GOL" => "Goldofir", "HUSL" => "The Hustle App", "LAND" => "Landbox", "SST" => "SocialSwap", "TCT" => "Top Coin Token", "TOR" => "Torex", "UNI" => "UNICORN Token", "UNISWAP" => "UNI", "XBT" => "BTC" }, dex: false, enable_rate_limit: true, endpoint_extraction_stats: %{ "capturedMethods" => 23, "coveragePercent" => 100, "enabledMethods" => 27, "excluded" => [ %{ "method" => "editOrder", "reason" => "emulated (returns cached data, no HTTP call)" }, %{ "method" => "fetchTransactions", "reason" => "emulated (returns cached data, no HTTP call)" } ], "excludedMethods" => 2, "extractableMethods" => 25, "failures" => [ %{ "error" => "probit createOrder() requires the price argument for market buy orders to calculate the total cost to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend in the amount argument", "method" => "createMarketOrder" }, %{ "error" => "probit does not have currency code B", "method" => "fetchDepositAddresses" } ] }, endpoints: [ %{ api_section: "private", auth: true, cost: 1, market_type: :spot, method: :post, name: :cancel_order, param_mappings: %{ "id" => "order_id", "symbol" => "market_id" }, params: [ :id, :symbol ], path: "/cancel_order", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 2, default_params: %{ "time_in_force" => "gtc", "type" => "limit" }, market_type: :spot, method: :post, name: :create_limit_order, param_mappings: %{ "amount" => "quantity", "price" => "limit_price", "symbol" => "market_id" }, params: [ :symbol, :side, :amount, :price ], path: "/new_order", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 2, default_params: %{ "side" => "buy", "time_in_force" => "ioc", "type" => "market" }, market_type: :spot, method: :post, name: :create_market_buy_order_with_cost, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :cost ], path: "/new_order", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 2, default_params: %{ "time_in_force" => "gtc" }, market_type: :spot, method: :post, name: :create_order, param_mappings: %{ "amount" => "quantity", "price" => "limit_price", "symbol" => "market_id" }, params: [ :symbol, :type, :side, :amount, :price ], path: "/new_order", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, market_type: :spot, method: :get, name: :fetch_balance, param_mappings: %{}, params: [], path: "/balance", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.930Z", "limit" => 100, "start_time" => "1970-01-01T00:00:00.000Z" }, market_type: :spot, method: :get, name: :fetch_closed_orders, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :since, :limit ], path: "/order_history", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_currencies, param_mappings: %{}, params: [], path: "/currency_with_platform", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, market_type: :spot, method: :get, name: :fetch_deposit_address, param_mappings: %{ "code" => "currency_id" }, params: [ :code ], path: "/deposit_address", response_transformer: {:extract_path_unwrap, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.930Z", "limit" => 100, "start_time" => "1970-01-01T00:00:00.001Z", "type" => "deposit" }, market_type: :spot, method: :get, name: :fetch_deposits, param_mappings: %{ "code" => "currency_id" }, params: [ :code, :since, :limit ], path: "/transfer/payment", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.930Z", "limit" => 100, "start_time" => "1970-01-01T00:00:00.001Z" }, market_type: :spot, method: :get, name: :fetch_deposits_withdrawals, param_mappings: %{ "code" => "currency_id" }, params: [ :code, :since, :limit ], path: "/transfer/payment", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_l2_order_book, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :limit ], path: "/order_book", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_markets, param_mappings: %{}, params: [], path: "/market", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.931Z", "limit" => 100, "start_time" => "2025-02-24T10:53:53.931Z" }, market_type: :spot, method: :get, name: :fetch_my_trades, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :since, :limit ], path: "/trade_history", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, default_params: %{ "end_time" => "2024-01-05T05:00:00.000Z", "limit" => 101, "sort" => "asc", "start_time" => "2024-01-01T00:00:00.000Z" }, market_type: :spot, method: :get, name: :fetch_ohlcv, param_mappings: %{ "symbol" => "market_ids", "timeframe" => "interval" }, params: [ :symbol, :timeframe, :since, :limit ], path: "/candle", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, market_type: :spot, method: :get, name: :fetch_open_orders, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :since, :limit ], path: "/open_order", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, market_type: :spot, method: :get, name: :fetch_order, param_mappings: %{ "id" => "order_id", "symbol" => "market_id" }, params: [ :id, :symbol ], path: "/order", response_transformer: {:extract_path_unwrap, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_order_book, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :limit ], path: "/order_book", response_transformer: {:extract_path_unwrap, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_ticker, param_mappings: %{ "symbol" => "market_ids" }, params: [ :symbol ], path: "/ticker", response_transformer: {:extract_path_unwrap, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, default_params: %{ "market_ids" => "BTCUSDT" }, market_type: :spot, method: :get, name: :fetch_tickers, param_mappings: %{}, params: [ :symbols ], path: "/ticker", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, market_type: :spot, method: :get, name: :fetch_time, param_mappings: %{}, params: [], path: "/time", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "public", auth: false, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.931Z", "start_time" => "2024-01-01T00:00:00.000Z" }, market_type: :spot, method: :get, name: :fetch_trades, param_mappings: %{ "symbol" => "market_id" }, params: [ :symbol, :since, :limit ], path: "/trade", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 1, default_params: %{ "end_time" => "2026-02-24T10:53:53.931Z", "limit" => 100, "start_time" => "1970-01-01T00:00:00.001Z", "type" => "withdrawal" }, market_type: :spot, method: :get, name: :fetch_withdrawals, param_mappings: %{ "code" => "currency_id" }, params: [ :code, :since, :limit ], path: "/transfer/payment", response_transformer: {:extract_path, ["data"]}, source: :intercepted }, %{ api_section: "private", auth: true, cost: 2, default_params: %{ "destination_tag" => "" }, market_type: :spot, method: :post, name: :withdraw, param_mappings: %{ "code" => "currency_id" }, params: [ :code, :amount, :address, :tag ], path: "/withdrawal", response_transformer: {:extract_path, ["data"]}, source: :intercepted } ], error_code_details: %{ "DUPLICATE_ADDRESS" => %{ description: nil, type: :invalid_parameters }, "INVALID_ARGUMENT" => %{ description: nil, type: :invalid_parameters }, "INVALID_CURRENCY" => %{ description: nil, type: :invalid_parameters }, "INVALID_MARKET" => %{ description: nil, type: :invalid_order }, "INVALID_ORDER" => %{ description: nil, type: :invalid_order }, "MARKET_CLOSED" => %{ description: nil, type: :market_closed }, "MARKET_NOT_FOUND" => %{ description: nil, type: :invalid_order }, "MARKET_UNAVAILABLE" => %{ description: nil, type: :network_error }, "NOT_ALLOWED_COMBINATION" => %{ description: nil, type: :invalid_parameters }, "NOT_ENOUGH_BALANCE" => %{ description: nil, type: :insufficient_balance }, "RATE_LIMIT_EXCEEDED" => %{ description: nil, type: :rate_limited }, "TOO_MANY_OPEN_ORDERS" => %{ description: nil, type: :rate_limited }, "TRADING_UNAVAILABLE" => %{ description: nil, type: :network_error }, "UNAUTHORIZED" => %{ description: nil, type: :invalid_credentials }, "invalid_grant" => %{ description: nil, type: :invalid_credentials } }, error_codes: %{ "DUPLICATE_ADDRESS" => :invalid_parameters, "INVALID_ARGUMENT" => :invalid_parameters, "INVALID_CURRENCY" => :invalid_parameters, "INVALID_MARKET" => :invalid_order, "INVALID_ORDER" => :invalid_order, "MARKET_CLOSED" => :market_closed, "MARKET_NOT_FOUND" => :invalid_order, "MARKET_UNAVAILABLE" => :network_error, "NOT_ALLOWED_COMBINATION" => :invalid_parameters, "NOT_ENOUGH_BALANCE" => :insufficient_balance, "RATE_LIMIT_EXCEEDED" => :rate_limited, "TOO_MANY_OPEN_ORDERS" => :rate_limited, "TRADING_UNAVAILABLE" => :network_error, "UNAUTHORIZED" => :invalid_credentials, "invalid_grant" => :invalid_credentials }, exceptions: %{ exact: %{ "DUPLICATE_ADDRESS" => :invalid_address, "INVALID_ARGUMENT" => :bad_request, "INVALID_CURRENCY" => :bad_request, "INVALID_MARKET" => :bad_symbol, "INVALID_ORDER" => :invalid_order, "MARKET_CLOSED" => :market_closed, "MARKET_NOT_FOUND" => :bad_symbol, "MARKET_UNAVAILABLE" => :exchange_not_available, "NOT_ALLOWED_COMBINATION" => :bad_request, "NOT_ENOUGH_BALANCE" => :insufficient_funds, "RATE_LIMIT_EXCEEDED" => :rate_limit_exceeded, "TOO_MANY_OPEN_ORDERS" => :ddos_protection, "TRADING_UNAVAILABLE" => :exchange_not_available, "UNAUTHORIZED" => :authentication_error, "invalid_grant" => :authentication_error } }, exchange_options: %{ "createMarketBuyOrderRequiresPrice" => true, "defaultNetworkCodeReplacements" => %{ "BRC20" => %{ "BRC20" => "BTC" }, "CRO" => %{ "CRC20" => "CRONOS" }, "ETH" => %{ "ERC20" => "ETH" }, "TRX" => %{ "TRC20" => "TRX" } }, "networks" => %{ "BEP20" => "BSC", "ERC20" => "ETH", "TRC20" => "TRON" }, "networksById" => %{ "BSC" => "BEP20", "ETH" => "ERC20", "TRON" => "TRC20" }, "timeInForce" => %{ "limit" => "gtc", "market" => "ioc" } }, extended_metadata: %{ fees_url: "https://support.probit.com/hc/en-us/articles/360020968611-Trading-Fees", limits: %{ "amount" => %{}, "cost" => %{}, "leverage" => %{}, "price" => %{} }, logo_url: "https://user-images.githubusercontent.com/51840849/79268032-c4379480-7ea2-11ea-80b3-dd96bb29fd0d.jpg", referral_url: "https://www.probit.com/r/34608773" }, extracted_metadata: %{ ccxt_version: "4.5.34" }, features: %{ future: %{}, spot: %{ create_order: %{ hedged: false, iceberg: false, leverage: false, margin_mode: false, market_buy_by_cost: true, market_buy_requires_price: false, self_trade_prevention: false, stop_loss_price: false, take_profit_price: false, time_in_force: %{ fok: true, gtd: false, ioc: true, po: false }, trailing: false, trigger_direction: false, trigger_price: false }, fetch_closed_orders: %{ days_back: 100000, days_back_canceled: 1, limit: 1000, margin_mode: false, symbol_required: false, trailing: false, trigger: false, until_days: 90 }, fetch_my_trades: %{ days_back: 100000, limit: 1000, margin_mode: false, symbol_required: false, until_days: 100000 }, fetch_ohlcv: %{ limit: 4000 }, fetch_open_orders: %{ margin_mode: false, symbol_required: false, trailing: false, trigger: false }, fetch_order: %{ margin_mode: false, symbol_required: true, trailing: false, trigger: false }, sandbox: false }, swap: %{} }, fees: %{ trading: %{ maker: 0.002, percentage: true, taker: 0.002, tier_based: false } }, handle_content_type_application_zip: nil, handle_errors_source: "handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {\n if (response === undefined) {\n return undefined; // fallback to default error handler\n }\n if ('errorCode' in response) {\n const errorCode = this.safeString(response, 'errorCode');\n if (errorCode !== undefined) {\n const errMessage = this.safeString(response, 'message', '');\n const details = this.safeValue(response, 'details');\n const feedback = this.id + ' ' + errorCode + ' ' + errMessage + ' ' + this.json(details);\n if ('exact' in this.exceptions) {\n this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);\n }\n if ('broad' in this.exceptions) {\n this.throwBroadlyMatchedException(this.exceptions['broad'], errMessage, feedback);\n }\n throw new errors.ExchangeError(feedback);\n }\n }\n return undefined;\n }", has: %{ add_margin: false, borrow_cross_margin: false, borrow_isolated_margin: false, borrow_margin: false, c_o_r_s: true, cancel_all_orders: false, cancel_all_orders_ws: false, cancel_order: true, cancel_order_with_client_order_id: false, cancel_order_ws: false, cancel_orders: false, cancel_orders_with_client_order_id: false, cancel_orders_ws: false, close_all_positions: false, close_position: false, create_deposit_address: false, create_limit_buy_order: false, create_limit_buy_order_ws: false, create_limit_order: true, create_limit_order_ws: false, create_limit_sell_order: false, create_limit_sell_order_ws: false, create_market_buy_order: false, create_market_buy_order_with_cost: true, create_market_buy_order_with_cost_ws: false, create_market_buy_order_ws: false, create_market_order: true, create_market_order_with_cost: false, create_market_order_with_cost_ws: false, create_market_order_ws: true, create_market_sell_order: false, create_market_sell_order_with_cost: false, create_market_sell_order_with_cost_ws: false, create_market_sell_order_ws: false, create_order: true, create_order_with_take_profit_and_stop_loss: false, create_order_with_take_profit_and_stop_loss_ws: false, create_order_ws: false, create_orders: false, create_post_only_order: false, create_post_only_order_ws: false, create_reduce_only_order: false, create_reduce_only_order_ws: false, create_stop_limit_order: false, create_stop_limit_order_ws: false, create_stop_loss_order: false, create_stop_loss_order_ws: false, create_stop_market_order: false, create_stop_market_order_ws: false, create_stop_order: false, create_stop_order_ws: false, create_take_profit_order: false, create_take_profit_order_ws: false, create_trailing_amount_order: false, create_trailing_amount_order_ws: false, create_trailing_percent_order: false, create_trailing_percent_order_ws: false, create_trigger_order: false, create_trigger_order_ws: false, deposit: false, edit_order: true, edit_order_with_client_order_id: false, edit_order_ws: false, edit_orders: false, fetch_accounts: false, fetch_all_greeks: false, fetch_balance: true, fetch_balance_ws: false, fetch_bids_asks: false, fetch_borrow_interest: false, fetch_borrow_rate: false, fetch_borrow_rate_histories: false, fetch_borrow_rate_history: false, fetch_borrow_rates: false, fetch_borrow_rates_per_symbol: false, fetch_canceled_and_closed_orders: false, fetch_canceled_orders: false, fetch_closed_order: false, fetch_closed_orders: true, fetch_closed_orders_ws: false, fetch_convert_currencies: false, fetch_convert_quote: false, fetch_convert_trade: false, fetch_convert_trade_history: false, fetch_cross_borrow_rate: false, fetch_cross_borrow_rates: false, fetch_currencies: true, fetch_currencies_ws: true, fetch_deposit: false, fetch_deposit_address: true, fetch_deposit_addresses: true, fetch_deposit_addresses_by_network: false, fetch_deposit_withdraw_fee: false, fetch_deposit_withdraw_fees: false, fetch_deposits: true, fetch_deposits_withdrawals: true, fetch_deposits_ws: false, fetch_funding_history: false, fetch_funding_interval: false, fetch_funding_intervals: false, fetch_funding_rate: false, fetch_funding_rate_history: false, fetch_funding_rates: false, fetch_greeks: false, fetch_index_ohlcv: false, fetch_isolated_borrow_rate: false, fetch_isolated_borrow_rates: false, fetch_isolated_positions: false, fetch_l2_order_book: true, fetch_l3_order_book: false, fetch_last_prices: false, fetch_ledger: false, fetch_ledger_entry: false, fetch_leverage: false, fetch_leverage_tiers: false, fetch_leverages: false, fetch_liquidations: false, fetch_long_short_ratio: false, fetch_long_short_ratio_history: false, fetch_margin_adjustment_history: false, fetch_margin_mode: false, fetch_margin_modes: false, fetch_mark_ohlcv: false, fetch_mark_price: false, fetch_mark_prices: false, fetch_market_leverage_tiers: false, fetch_markets: true, fetch_markets_ws: false, fetch_my_liquidations: false, fetch_my_settlement_history: false, fetch_my_trades: true, fetch_my_trades_ws: false, fetch_ohlcv: true, fetch_ohlcv_ws: false, fetch_open_interest: false, fetch_open_interest_history: false, fetch_open_interests: false, fetch_open_order: false, fetch_open_orders: true, fetch_open_orders_ws: false, fetch_option: false, fetch_option_chain: false, fetch_order: true, fetch_order_book: true, fetch_order_book_ws: false, fetch_order_books: false, fetch_order_trades: false, fetch_order_with_client_order_id: false, fetch_order_ws: false, fetch_orders: false, fetch_orders_by_status: false, fetch_orders_ws: false, fetch_position: false, fetch_position_history: false, fetch_position_mode: false, fetch_position_ws: false, fetch_positions: false, fetch_positions_for_symbol: false, fetch_positions_for_symbol_ws: false, fetch_positions_history: false, fetch_positions_risk: false, fetch_positions_ws: false, fetch_premium_index_ohlcv: false, fetch_settlement_history: false, fetch_status: false, fetch_ticker: true, fetch_ticker_ws: false, fetch_tickers: true, fetch_tickers_ws: false, fetch_time: true, fetch_trades: true, fetch_trades_ws: false, fetch_trading_fee: false, fetch_trading_fees: false, fetch_trading_fees_ws: false, fetch_trading_limits: false, fetch_transaction_fee: false, fetch_transaction_fees: false, fetch_transactions: true, fetch_transfer: false, fetch_transfers: false, fetch_underlying_assets: false, fetch_volatility_history: false, fetch_withdraw_addresses: false, fetch_withdrawal: false, fetch_withdrawal_whitelist: false, fetch_withdrawals: true, fetch_withdrawals_ws: false, future: false, margin: false, option: false, private_api: true, public_api: true, reduce_margin: false, repay_cross_margin: false, repay_isolated_margin: false, sandbox: false, set_leverage: false, set_margin: false, set_margin_mode: false, set_position_mode: false, sign_in: true, spot: true, swap: false, transfer: false, un_watch_my_trades: false, un_watch_ohlcv: false, un_watch_ohlcv_for_symbols: false, un_watch_order_book: false, un_watch_order_book_for_symbols: false, un_watch_orders: false, un_watch_positions: false, un_watch_ticker: false, un_watch_tickers: false, un_watch_trades: false, un_watch_trades_for_symbols: false, watch_balance: true, watch_bids_asks: false, watch_liquidations: false, watch_liquidations_for_symbols: false, watch_my_liquidations: false, watch_my_liquidations_for_symbols: false, watch_my_trades: true, watch_ohlcv: false, watch_ohlcv_for_symbols: false, watch_order_book: true, watch_order_book_for_symbols: false, watch_orders: true, watch_orders_for_symbols: false, watch_position: false, watch_positions: false, watch_status: false, watch_ticker: true, watch_tickers: false, watch_trades: true, watch_trades_for_symbols: false, withdraw: true, ws: false }, http_config: nil, id: "probit", markets: nil, name: "ProBit", ohlcv_timestamp_resolution: :unknown, options: %{ create_market_buy_order_requires_price: true, networks: %{ "BEP20" => "BSC", "ERC20" => "ETH", "TRC20" => "TRON" }, time_in_force: %{ "limit" => "gtc", "market" => "ioc" } }, order_mappings: %{ side_format: :lowercase, side_key: "side", type_format: :lowercase, type_key: "type" }, param_mappings: %{ "amount" => "quantity", "code" => "currency_id", "id" => "order_id", "price" => "limit_price", "symbol" => "market_id", "timeframe" => "interval" }, parse_methods: [], path_prefix: "/v1/", pro: true, quote_json_numbers: nil, rate_limits: %{ interval_ms: 50, period: 1000, requests: 20, rolling_window_size: 60000 }, raw_endpoints: %{ private: [ %{ auth: false, cost: 1, method: :get, path: "/balance" }, %{ auth: false, cost: 1, method: :get, path: "/deposit_address" }, %{ auth: false, cost: 1, method: :get, path: "/open_order" }, %{ auth: false, cost: 1, method: :get, path: "/order" }, %{ auth: false, cost: 1, method: :get, path: "/order_history" }, %{ auth: false, cost: 1, method: :get, path: "/trade_history" }, %{ auth: false, cost: 1, method: :get, path: "/transfer/payment" }, %{ auth: false, cost: 1, method: :post, path: "/cancel_order" }, %{ auth: false, cost: 2, method: :post, path: "/new_order" }, %{ auth: false, cost: 2, method: :post, path: "/withdrawal" } ], public: [ %{ auth: false, cost: 1, method: :get, path: "/candle" }, %{ auth: false, cost: 1, method: :get, path: "/currency" }, %{ auth: false, cost: 1, method: :get, path: "/currency_with_platform" }, %{ auth: false, cost: 1, method: :get, path: "/market" }, %{ auth: false, cost: 1, method: :get, path: "/order_book" }, %{ auth: false, cost: 1, method: :get, path: "/ticker" }, %{ auth: false, cost: 1, method: :get, path: "/time" }, %{ auth: false, cost: 1, method: :get, path: "/trade" } ] }, required_credentials: %{ api_key: true, password: false, secret: true, uid: false }, requires_eddsa: false, response_error: nil, signing: %{ confidence: :medium, pattern: :hmac_sha256_headers }, spec_format_version: 1, status: %{ "eta" => nil, "status" => "ok", "updated" => nil, "url" => nil }, symbol_format: nil, symbol_formats: nil, symbol_patterns: %{}, timeframes: %{ "10m" => "10m", "12h" => "12h", "15m" => "15m", "1M" => "1M", "1d" => "1D", "1h" => "1h", "1m" => "1m", "1w" => "1W", "30m" => "30m", "3m" => "3m", "4h" => "4h", "5m" => "5m", "6h" => "6h" }, url_strategy: %{ detected_from: "sign_method", pattern: :version_slash, prefix: "/v1/" }, urls: %{ api: "https://api.probit.com/api/exchange", api_sections: %{ "accounts" => "https://accounts.probit.com", "private" => "https://api.probit.com/api/exchange", "public" => "https://api.probit.com/api/exchange" }, doc: [ "https://docs-en.probit.com", "https://docs-ko.probit.com" ], other: nil, sandbox: nil, www: "https://www.probit.com" }, version: "v1", ws: %{ has: %{ watch_balance: true, watch_bids_asks: nil, watch_liquidations: nil, watch_liquidations_for_symbols: nil, watch_my_liquidations: nil, watch_my_liquidations_for_symbols: nil, watch_my_trades: true, watch_ohlcv: false, watch_ohlcv_for_symbols: nil, watch_order_book: true, watch_order_book_for_symbols: nil, watch_orders: true, watch_orders_for_symbols: nil, watch_position: nil, watch_positions: nil, watch_status: nil, watch_ticker: true, watch_tickers: false, watch_trades: true, watch_trades_for_symbols: false }, message_patterns: [ %{ format: :type, keys: [ "type" ], kind_field: "type", kind_value: "authorization", sources: [ :send, :watch ] }, %{ args_field: "channel", format: :type, keys: [ "channel", "filter", "interval", "market_id", "type" ], kind_field: "type", kind_value: "subscribe", sources: [ :send, :watch ] }, %{ args_field: "channel", format: :type, keys: [ "channel", "type" ], kind_field: "type", kind_value: "subscribe", sources: [ :send, :watch ] } ], options: %{ "watchOrderBook" => %{ "filter" => "order_books_l2", "interval" => 100 } }, subscription_pattern: :custom, test_urls: "wss://demo-api.probit.com/api/exchange/v1/ws", urls: "wss://api.probit.com/api/exchange/v1/ws" } }