mywebapi-sdk 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cplugin_webapi_sdk/__init__.py +79 -0
- cplugin_webapi_sdk/_generated/__init__.py +8 -0
- cplugin_webapi_sdk/_generated/api/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_check_login.py +306 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_set_login.py +377 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_orders_mode.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_users_mode.py +262 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_orders_file.py +285 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_users_file.py +325 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_orders.py +332 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_users.py +344 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_common/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_journal_request.py +326 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_manager_common.py +229 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_server_time.py +225 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_access.py +280 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_backup.py +241 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_common.py +237 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_data_server.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_feeder.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_account.py +280 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_markup.py +280 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_rule.py +272 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_holiday.py +296 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_live_update.py +272 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_manager.py +272 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_sync.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_time.py +245 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_access_pos.py +254 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_data_server_pos.py +234 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_feeder_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_account_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_markup_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_rule_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_holiday_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_live_update_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_manager_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_symbol_pos.py +238 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_sync_pos.py +230 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_access_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_data_server_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_feeder_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_account_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_markup_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_rule_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_group_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_holiday_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_live_update_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_manager_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_plugin_pos.py +266 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_symbol_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_sync_pos.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_access_pos.py +378 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_backup.py +361 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_common.py +389 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_data_server_pos.py +354 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_feeder.py +305 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_account.py +361 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_markup.py +345 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_rule.py +377 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_holiday_pos.py +350 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_live_update.py +385 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_manager.py +385 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_symbol_group_pos.py +342 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_sync.py +349 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_time.py +421 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_ensure_group_name_exist_group.py +274 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_record_get_group.py +242 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_groups_get_group.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_margins_get_group.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_get.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_request.py +256 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/patch_api_v_2_mt4_trade_platform_group_record_group.py +255 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/post_api_v_2_mt4_trade_platform_group_record_update_group.py +542 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_history/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_history/get_api_v_2_mt4_trade_platform_trades_user_history_login.py +292 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/get_api_v_2_mt4_trade_platform_mail_last.py +225 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_get_login.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_request_login.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margins_get.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_body_get_key.py +238 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_get.py +237 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_topic_get_pos.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_total.py +225 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_news/post_api_v_2_mt4_trade_platform_news_body_request_key.py +254 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_online/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_get.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_request.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/post_api_v_2_mt4_trade_platform_external_command_json.py +309 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_chart_request_symbol.py +332 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last_symbol.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_ticks_request_symbol.py +311 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_add_symbol.py +375 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_delete_symbol.py +375 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_update_symbol.py +367 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_history_correct_symbol.py +274 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request.py +362 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request_ex.py +334 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_performance_request.py +281 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_reports_request.py +370 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_read.py +253 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_start.py +289 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_license_check_license_name.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeder_log_name.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeders.py +288 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/post_api_v_2_mt4_trade_platform_notifications_send.py +289 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_charts_sync.py +257 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_feeds_restart.py +253 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_live_update_start.py +253 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_restart.py +281 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_snapshot.py +245 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_sync_read.py +249 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_snapshot.py +257 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_sync_read.py +253 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/post_api_v_2_mt4_trade_platform_external_command_binary.py +393 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/get_api_v_2_mt4_trade_platform_mails_request.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_mail_send.py +317 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_news_send.py +309 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_cfg_request_plugin.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugin_param_get_pos.py +242 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugins_get.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_cfg_update_plugin.py +301 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_plugin_update.py +293 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol.py +229 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol_symbol.py +242 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_get.py +253 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_updated.py +268 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_sessions_get_symbol.py +258 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbols_groups_get.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/patch_api_v_2_mt4_trade_platform_symbol_config_symbol.py +255 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_cfg_update_symbol_symbol.py +530 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_add_symbol.py +270 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_change.py +417 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_hide_symbol.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_send_tick.py +319 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbols_refresh.py +233 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_adm_trades_request_group.py +266 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_get_order.py +246 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_request_order.py +258 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_records_request.py +278 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get.py +252 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_login_login_group.py +259 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_market.py +229 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_symbol.py +249 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_ticket.py +254 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_request.py +299 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trade_record_modify_ticket.py +462 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trades_delete.py +290 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_check_stops.py +453 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_clear_rollback_order.py +262 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_transaction.py +453 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trades_sync_start.py +261 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check.py +266 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check_login.py +266 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_users_request_safe_group.py +274 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_get_login.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_request_login.py +250 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_records_request.py +274 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_users_request.py +276 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/patch_api_v_2_mt4_trade_platform_user_record_login.py +283 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_adm_balance_fix.py +290 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_new.py +465 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_update_login.py +678 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_group_op.py +349 -0
- cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_sync_start.py +273 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_common/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_server_time.py +205 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_time_get.py +205 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/get_api_v_2_mt5_trade_platform_group_get_group.py +218 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/patch_api_v_2_mt5_trade_platform_group_record_group.py +255 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/get_api_v_2_mt5_trade_platform_manager_current.py +205 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/get_api_v_2_mt5_trade_platform_symbol_get_symbol.py +218 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/patch_api_v_2_mt5_trade_platform_symbol_record_symbol.py +255 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_deal_by_group_mask.py +265 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_order_by_group_mask.py +265 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_position_by_group_mask.py +265 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_users/__init__.py +1 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_users/get_api_v_2_mt5_trade_platform_user_get_login.py +218 -0
- cplugin_webapi_sdk/_generated/api/mt5_v_2_users/patch_api_v_2_mt5_trade_platform_user_record_login.py +255 -0
- cplugin_webapi_sdk/_generated/client.py +271 -0
- cplugin_webapi_sdk/_generated/errors.py +14 -0
- cplugin_webapi_sdk/_generated/models/__init__.py +469 -0
- cplugin_webapi_sdk/_generated/models/activation_modes.py +10 -0
- cplugin_webapi_sdk/_generated/models/activation_type.py +15 -0
- cplugin_webapi_sdk/_generated/models/api_error.py +135 -0
- cplugin_webapi_sdk/_generated/models/api_meta.py +114 -0
- cplugin_webapi_sdk/_generated/models/arc_backup_execution_period.py +10 -0
- cplugin_webapi_sdk/_generated/models/arc_backup_store_period.py +11 -0
- cplugin_webapi_sdk/_generated/models/backup_execution_period.py +9 -0
- cplugin_webapi_sdk/_generated/models/backup_store_period.py +10 -0
- cplugin_webapi_sdk/_generated/models/boolean_api_response.py +143 -0
- cplugin_webapi_sdk/_generated/models/chart_period.py +15 -0
- cplugin_webapi_sdk/_generated/models/data_feed_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/date_time_api_response.py +154 -0
- cplugin_webapi_sdk/_generated/models/deal_action.py +27 -0
- cplugin_webapi_sdk/_generated/models/deal_reason.py +26 -0
- cplugin_webapi_sdk/_generated/models/en_auth_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/en_auth_otp_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_calc_mode.py +21 -0
- cplugin_webapi_sdk/_generated/models/en_chart_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_action_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_charge_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_entry_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_profit_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_comm_range_mode.py +11 -0
- cplugin_webapi_sdk/_generated/models/en_commission_mode.py +14 -0
- cplugin_webapi_sdk/_generated/models/en_commission_volume_type.py +8 -0
- cplugin_webapi_sdk/_generated/models/en_execution_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/en_free_margin_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/en_gateway_account_flags.py +8 -0
- cplugin_webapi_sdk/_generated/models/en_gtc_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_history_limit.py +13 -0
- cplugin_webapi_sdk/_generated/models/en_industries.py +172 -0
- cplugin_webapi_sdk/_generated/models/en_instant_mode.py +7 -0
- cplugin_webapi_sdk/_generated/models/en_log_type.py +14 -0
- cplugin_webapi_sdk/_generated/models/en_mail_mode.py +8 -0
- cplugin_webapi_sdk/_generated/models/en_manager_limit.py +13 -0
- cplugin_webapi_sdk/_generated/models/en_manager_rights.py +82 -0
- cplugin_webapi_sdk/_generated/models/en_margin_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_news_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_option_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/en_reports_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/en_sectors.py +22 -0
- cplugin_webapi_sdk/_generated/models/en_splice_time_type.py +7 -0
- cplugin_webapi_sdk/_generated/models/en_splice_type.py +9 -0
- cplugin_webapi_sdk/_generated/models/en_stop_out_mode.py +8 -0
- cplugin_webapi_sdk/_generated/models/en_swap_days.py +14 -0
- cplugin_webapi_sdk/_generated/models/en_swap_mode.py +16 -0
- cplugin_webapi_sdk/_generated/models/en_trade_mode.py +11 -0
- cplugin_webapi_sdk/_generated/models/en_transfer_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/entry_flag.py +10 -0
- cplugin_webapi_sdk/_generated/models/export_execution_period.py +11 -0
- cplugin_webapi_sdk/_generated/models/gtc_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/int_32_api_response.py +143 -0
- cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response.py +170 -0
- cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response_data_type_0.py +107 -0
- cplugin_webapi_sdk/_generated/models/json_node.py +155 -0
- cplugin_webapi_sdk/_generated/models/json_node_api_response.py +170 -0
- cplugin_webapi_sdk/_generated/models/json_node_options.py +60 -0
- cplugin_webapi_sdk/_generated/models/margin_calculation_mode.py +11 -0
- cplugin_webapi_sdk/_generated/models/margin_controlling_type.py +8 -0
- cplugin_webapi_sdk/_generated/models/margin_level_type.py +9 -0
- cplugin_webapi_sdk/_generated/models/margin_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/mt4_access.py +106 -0
- cplugin_webapi_sdk/_generated/models/mt4_access_api_response.py +173 -0
- cplugin_webapi_sdk/_generated/models/mt4_access_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_backup.py +442 -0
- cplugin_webapi_sdk/_generated/models/mt4_backup_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_backup_info.py +107 -0
- cplugin_webapi_sdk/_generated/models/mt4_backup_info_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_balance_diff.py +74 -0
- cplugin_webapi_sdk/_generated/models/mt4_balance_diff_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_balance_diff_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_chart_bar.py +121 -0
- cplugin_webapi_sdk/_generated/models/mt4_chart_bar_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_chart_write_request.py +103 -0
- cplugin_webapi_sdk/_generated/models/mt4_common.py +124 -0
- cplugin_webapi_sdk/_generated/models/mt4_common_api_response.py +172 -0
- cplugin_webapi_sdk/_generated/models/mt4_common_update.py +201 -0
- cplugin_webapi_sdk/_generated/models/mt4_daily_report.py +212 -0
- cplugin_webapi_sdk/_generated/models/mt4_daily_report_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_data_server.py +153 -0
- cplugin_webapi_sdk/_generated/models/mt4_data_server_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_data_server_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_request.py +77 -0
- cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response.py +74 -0
- cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response_api_response.py +171 -0
- cplugin_webapi_sdk/_generated/models/mt4_feeder.py +235 -0
- cplugin_webapi_sdk/_generated/models/mt4_feeder_api_response.py +172 -0
- cplugin_webapi_sdk/_generated/models/mt4_feeder_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_account.py +190 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_account_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_account_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_markup.py +157 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_rule.py +234 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_api_response.py +177 -0
- cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_group.py +505 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_api_response.py +193 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_margin.py +104 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_margin_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_sec.py +321 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_sec_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_group_update.py +467 -0
- cplugin_webapi_sdk/_generated/models/mt4_holiday.py +153 -0
- cplugin_webapi_sdk/_generated/models/mt4_holiday_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_holiday_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_live_update.py +165 -0
- cplugin_webapi_sdk/_generated/models/mt4_live_update_api_response.py +177 -0
- cplugin_webapi_sdk/_generated/models/mt4_live_update_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_mail_box.py +148 -0
- cplugin_webapi_sdk/_generated/models/mt4_mail_box_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_mail_send_request.py +160 -0
- cplugin_webapi_sdk/_generated/models/mt4_manager_rights.py +338 -0
- cplugin_webapi_sdk/_generated/models/mt4_manager_rights_api_response.py +175 -0
- cplugin_webapi_sdk/_generated/models/mt4_manager_rights_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_margin_level.py +201 -0
- cplugin_webapi_sdk/_generated/models/mt4_margin_level_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_margin_level_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_news_send_request.py +127 -0
- cplugin_webapi_sdk/_generated/models/mt4_news_topic.py +177 -0
- cplugin_webapi_sdk/_generated/models/mt4_news_topic_api_response.py +178 -0
- cplugin_webapi_sdk/_generated/models/mt4_news_topic_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_notifications_send_request.py +114 -0
- cplugin_webapi_sdk/_generated/models/mt4_online.py +88 -0
- cplugin_webapi_sdk/_generated/models/mt4_online_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_performance.py +124 -0
- cplugin_webapi_sdk/_generated/models/mt4_performance_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin.py +153 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin_config.py +96 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin_param.py +137 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin_param_api_response.py +171 -0
- cplugin_webapi_sdk/_generated/models/mt4_plugin_param_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_server_log.py +151 -0
- cplugin_webapi_sdk/_generated/models/mt4_server_log_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_server_time.py +95 -0
- cplugin_webapi_sdk/_generated/models/mt4_server_time_api_response.py +178 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_change_request.py +148 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_config.py +683 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_config_api_response.py +177 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_config_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_config_update.py +608 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions.py +171 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_group.py +99 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_group_api_response.py +174 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_group_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_info.py +210 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_info_api_response.py +178 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_info_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_symbol_session.py +91 -0
- cplugin_webapi_sdk/_generated/models/mt4_sync.py +176 -0
- cplugin_webapi_sdk/_generated/models/mt4_sync_api_response.py +173 -0
- cplugin_webapi_sdk/_generated/models/mt4_sync_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_tick_info.py +117 -0
- cplugin_webapi_sdk/_generated/models/mt4_tick_info_api_response.py +175 -0
- cplugin_webapi_sdk/_generated/models/mt4_tick_info_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_tick_record.py +126 -0
- cplugin_webapi_sdk/_generated/models/mt4_tick_record_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade.py +409 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_api_response.py +179 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_restore_input.py +274 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result.py +72 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_transaction.py +262 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_transaction_api_response.py +181 -0
- cplugin_webapi_sdk/_generated/models/mt4_trade_update.py +165 -0
- cplugin_webapi_sdk/_generated/models/mt4_user.py +533 -0
- cplugin_webapi_sdk/_generated/models/mt4_user_api_response.py +184 -0
- cplugin_webapi_sdk/_generated/models/mt4_user_create.py +420 -0
- cplugin_webapi_sdk/_generated/models/mt4_user_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt4_user_restore_input.py +193 -0
- cplugin_webapi_sdk/_generated/models/mt4_user_update.py +441 -0
- cplugin_webapi_sdk/_generated/models/mt4_users_group_op.py +140 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_comm_tier.py +246 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_commission.py +409 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_group.py +1162 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_group_api_response.py +170 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_group_commissions_type_0.py +83 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_manager.py +227 -0
- cplugin_webapi_sdk/_generated/models/mt5_con_manager_api_response.py +156 -0
- cplugin_webapi_sdk/_generated/models/mt5_deal.py +1045 -0
- cplugin_webapi_sdk/_generated/models/mt5_deal_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt5_order.py +1008 -0
- cplugin_webapi_sdk/_generated/models/mt5_order_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt5_position.py +829 -0
- cplugin_webapi_sdk/_generated/models/mt5_position_list_api_response.py +180 -0
- cplugin_webapi_sdk/_generated/models/mt5_symbol.py +2743 -0
- cplugin_webapi_sdk/_generated/models/mt5_symbol_api_response.py +170 -0
- cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_initial_type_0.py +124 -0
- cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_maintenance_type_0.py +124 -0
- cplugin_webapi_sdk/_generated/models/mt5_symbol_session.py +182 -0
- cplugin_webapi_sdk/_generated/models/mt5_time.py +101 -0
- cplugin_webapi_sdk/_generated/models/mt5_time_api_response.py +170 -0
- cplugin_webapi_sdk/_generated/models/mt5_user.py +752 -0
- cplugin_webapi_sdk/_generated/models/mt5_user_api_response.py +172 -0
- cplugin_webapi_sdk/_generated/models/news_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/order_filling.py +10 -0
- cplugin_webapi_sdk/_generated/models/order_reason.py +26 -0
- cplugin_webapi_sdk/_generated/models/order_state.py +16 -0
- cplugin_webapi_sdk/_generated/models/order_time.py +10 -0
- cplugin_webapi_sdk/_generated/models/order_type.py +15 -0
- cplugin_webapi_sdk/_generated/models/otp_mode.py +8 -0
- cplugin_webapi_sdk/_generated/models/paging_meta.py +88 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_group_record_group_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_symbol_config_symbol_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_user_record_login_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_group_record_group_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_symbol_record_symbol_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_user_record_login_json_body.py +66 -0
- cplugin_webapi_sdk/_generated/models/position_actions.py +8 -0
- cplugin_webapi_sdk/_generated/models/position_reasons.py +26 -0
- cplugin_webapi_sdk/_generated/models/profit_calculation_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/request_mode.py +10 -0
- cplugin_webapi_sdk/_generated/models/result_code.py +46 -0
- cplugin_webapi_sdk/_generated/models/server_role.py +9 -0
- cplugin_webapi_sdk/_generated/models/string_api_response.py +155 -0
- cplugin_webapi_sdk/_generated/models/swap_type.py +10 -0
- cplugin_webapi_sdk/_generated/models/symbol_exec_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/symbol_price_direction.py +9 -0
- cplugin_webapi_sdk/_generated/models/synchronization_mode.py +11 -0
- cplugin_webapi_sdk/_generated/models/trade_command.py +14 -0
- cplugin_webapi_sdk/_generated/models/trade_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/trade_record_reason.py +14 -0
- cplugin_webapi_sdk/_generated/models/trade_record_state.py +13 -0
- cplugin_webapi_sdk/_generated/models/watchdog_failover_mode.py +9 -0
- cplugin_webapi_sdk/_generated/models/watchdog_state.py +9 -0
- cplugin_webapi_sdk/_generated/models/web_api_error_code.py +17 -0
- cplugin_webapi_sdk/_generated/operation_timeouts.py +181 -0
- cplugin_webapi_sdk/_generated/types.py +53 -0
- cplugin_webapi_sdk/auth.py +278 -0
- cplugin_webapi_sdk/client.py +1215 -0
- cplugin_webapi_sdk/discovery.py +109 -0
- cplugin_webapi_sdk/envelope.py +77 -0
- cplugin_webapi_sdk/environments.py +45 -0
- cplugin_webapi_sdk/errors.py +79 -0
- cplugin_webapi_sdk/flags.py +36 -0
- cplugin_webapi_sdk/pagination.py +141 -0
- cplugin_webapi_sdk/realtime.py +408 -0
- cplugin_webapi_sdk/timeouts.py +197 -0
- cplugin_webapi_sdk/unwrap.py +153 -0
- mywebapi_sdk-0.3.0.dist-info/METADATA +312 -0
- mywebapi_sdk-0.3.0.dist-info/RECORD +456 -0
- mywebapi_sdk-0.3.0.dist-info/WHEEL +4 -0
- mywebapi_sdk-0.3.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"""Bridge generated endpoint ``Response`` objects to unwrapped ``data``.
|
|
2
|
+
|
|
3
|
+
Generated ``*_detailed`` / ``asyncio_detailed`` functions return a
|
|
4
|
+
``cplugin_webapi_sdk._generated.types.Response`` whose ``.content`` attribute
|
|
5
|
+
holds the raw v2 envelope JSON bytes. We re-parse those bytes with our pydantic
|
|
6
|
+
``ApiEnvelope`` to get a uniform ``{data, error, meta}`` seam:
|
|
7
|
+
|
|
8
|
+
- If ``envelope.error`` is non-null → raise ``ApiError``.
|
|
9
|
+
- Otherwise → return ``envelope.data`` (and ``envelope.meta`` for paged callers).
|
|
10
|
+
|
|
11
|
+
We deliberately re-parse the raw JSON instead of reading ``Response.parsed``
|
|
12
|
+
because the generated ``*ApiResponse`` model already strips the envelope one
|
|
13
|
+
level, making ``meta`` (and therefore ``paging``) inaccessible. Re-parsing is
|
|
14
|
+
cheap (single JSON round-trip) and gives the ergonomic client a reliable, typed
|
|
15
|
+
``(data, meta)`` pair for every response.
|
|
16
|
+
|
|
17
|
+
Public surface
|
|
18
|
+
--------------
|
|
19
|
+
``unwrap(response)``
|
|
20
|
+
Sync — returns ``data`` or raises ``ApiError``.
|
|
21
|
+
``unwrap_with_meta(response)``
|
|
22
|
+
Sync — returns ``(data, meta | None)``.
|
|
23
|
+
``unwrap_async(awaitable)``
|
|
24
|
+
Async — awaits then delegates to ``unwrap``.
|
|
25
|
+
``unwrap_with_meta_async(awaitable)``
|
|
26
|
+
Async — awaits then delegates to ``unwrap_with_meta``.
|
|
27
|
+
"""
|
|
28
|
+
from __future__ import annotations
|
|
29
|
+
|
|
30
|
+
import json
|
|
31
|
+
from dataclasses import dataclass
|
|
32
|
+
from typing import Any, Awaitable
|
|
33
|
+
|
|
34
|
+
from pydantic import ValidationError
|
|
35
|
+
|
|
36
|
+
from .envelope import ApiEnvelope, ApiErrorBody, ApiMeta
|
|
37
|
+
from .errors import ApiError
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# ---------------------------------------------------------------------------
|
|
41
|
+
# Internal helper
|
|
42
|
+
# ---------------------------------------------------------------------------
|
|
43
|
+
|
|
44
|
+
@dataclass
|
|
45
|
+
class Unwrapped:
|
|
46
|
+
"""Internal seam for the paged accessor (Task 6).
|
|
47
|
+
|
|
48
|
+
Holds the two values we surface: the typed payload and the optional meta
|
|
49
|
+
block that carries the pagination cursor.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
data: Any
|
|
53
|
+
meta: ApiMeta | None
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _parse(response: Any) -> tuple[Any, ApiMeta | None]:
|
|
57
|
+
"""Parse ``response.content`` into ``(data, meta)`` or raise ``ApiError``.
|
|
58
|
+
|
|
59
|
+
``response`` is duck-typed: any object with ``.status_code`` (int or
|
|
60
|
+
``http.HTTPStatus``) and ``.content`` (bytes) attributes is accepted.
|
|
61
|
+
This matches the generated ``cplugin_webapi_sdk._generated.types.Response``
|
|
62
|
+
without importing it here and creating a coupling to the generated layer.
|
|
63
|
+
An optional ``.headers`` mapping is handed to ``ApiError`` so it can report
|
|
64
|
+
``X-Request-Outcome`` / ``X-Request-Timeout-Applied``.
|
|
65
|
+
"""
|
|
66
|
+
raw: bytes = response.content
|
|
67
|
+
headers = getattr(response, "headers", None)
|
|
68
|
+
# * Decode bytes → str so json.loads always receives a str/bytes it can handle.
|
|
69
|
+
text = raw.decode("utf-8") if isinstance(raw, (bytes, bytearray)) else raw
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
# * model_validate parses camelCase JSON via field aliases defined in ApiEnvelope.
|
|
73
|
+
env: ApiEnvelope[Any] = ApiEnvelope[Any].model_validate(json.loads(text))
|
|
74
|
+
except (json.JSONDecodeError, ValidationError) as exc:
|
|
75
|
+
# ! A TLS-terminating proxy (nginx, Caddy) can return an HTML 502/503/504
|
|
76
|
+
# ! or an empty body before the server even sees the request. Re-raise as
|
|
77
|
+
# ! the SDK's own error type so callers need only catch ApiError.
|
|
78
|
+
preview = text[:200].replace("\n", " ")
|
|
79
|
+
status = int(response.status_code)
|
|
80
|
+
body = ApiErrorBody(
|
|
81
|
+
code="InvalidResponse",
|
|
82
|
+
message=f"HTTP {status}: unparseable response body — {preview!r}",
|
|
83
|
+
manager_code=None,
|
|
84
|
+
)
|
|
85
|
+
raise ApiError(body, None, status, headers) from exc
|
|
86
|
+
|
|
87
|
+
if env.error is not None:
|
|
88
|
+
# ! Raise before touching env.data — error payload may carry a non-null
|
|
89
|
+
# ! data field on some future server versions; ignore it on error.
|
|
90
|
+
raise ApiError(env.error, env.meta, int(response.status_code), headers)
|
|
91
|
+
|
|
92
|
+
return env.data, env.meta
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# ---------------------------------------------------------------------------
|
|
96
|
+
# Public sync API
|
|
97
|
+
# ---------------------------------------------------------------------------
|
|
98
|
+
|
|
99
|
+
def unwrap(response: Any) -> Any:
|
|
100
|
+
"""Return the ``data`` field of the v2 envelope, or raise ``ApiError``.
|
|
101
|
+
|
|
102
|
+
Typical usage::
|
|
103
|
+
|
|
104
|
+
response = get_api_v2_mt4_server_time.sync_detailed(tp, client=client)
|
|
105
|
+
server_time: datetime = unwrap(response)
|
|
106
|
+
"""
|
|
107
|
+
data, _ = _parse(response)
|
|
108
|
+
return data
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def unwrap_with_meta(response: Any) -> tuple[Any, ApiMeta | None]:
|
|
112
|
+
"""Return ``(data, meta)`` from the v2 envelope, or raise ``ApiError``.
|
|
113
|
+
|
|
114
|
+
The ``meta`` value carries ``paging`` (cursor + ``has_more`` flag) for list
|
|
115
|
+
endpoints. Non-list endpoints return ``meta.paging = None``.
|
|
116
|
+
|
|
117
|
+
Typical usage::
|
|
118
|
+
|
|
119
|
+
response = list_trades.sync_detailed(tp, client=client)
|
|
120
|
+
trades, meta = unwrap_with_meta(response)
|
|
121
|
+
cursor = meta.paging.next_cursor if meta and meta.paging else None
|
|
122
|
+
"""
|
|
123
|
+
return _parse(response)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# Public async API
|
|
128
|
+
# ---------------------------------------------------------------------------
|
|
129
|
+
|
|
130
|
+
async def unwrap_async(awaitable_response: Awaitable[Any]) -> Any:
|
|
131
|
+
"""Await the async endpoint call, then return ``data`` or raise ``ApiError``.
|
|
132
|
+
|
|
133
|
+
Typical usage::
|
|
134
|
+
|
|
135
|
+
server_time = await unwrap_async(
|
|
136
|
+
get_api_v2_mt4_server_time.asyncio_detailed(tp, client=client)
|
|
137
|
+
)
|
|
138
|
+
"""
|
|
139
|
+
response = await awaitable_response
|
|
140
|
+
return unwrap(response)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
async def unwrap_with_meta_async(awaitable_response: Awaitable[Any]) -> tuple[Any, ApiMeta | None]:
|
|
144
|
+
"""Await the async endpoint call, then return ``(data, meta)`` or raise ``ApiError``.
|
|
145
|
+
|
|
146
|
+
Typical usage::
|
|
147
|
+
|
|
148
|
+
trades, meta = await unwrap_with_meta_async(
|
|
149
|
+
list_trades.asyncio_detailed(tp, client=client)
|
|
150
|
+
)
|
|
151
|
+
"""
|
|
152
|
+
response = await awaitable_response
|
|
153
|
+
return unwrap_with_meta(response)
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: mywebapi-sdk
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Python client for the MyWebAPI.com trading platform management API (v2). Generated endpoints + httpx ergonomic layer.
|
|
5
|
+
Project-URL: Homepage, https://github.com/CPlugin/mywebapi.com-sdk-py
|
|
6
|
+
Project-URL: Repository, https://github.com/CPlugin/mywebapi.com-sdk-py
|
|
7
|
+
Project-URL: Issues, https://github.com/CPlugin/mywebapi.com-sdk-py/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/CPlugin/mywebapi.com-sdk-py/blob/main/CHANGELOG.md
|
|
9
|
+
Author: CPlugin
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: broker,forex,httpx,mywebapi,sdk,signalr,trading,trading-platform,webapi
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Classifier: Typing :: Typed
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Requires-Dist: attrs>=23.1
|
|
27
|
+
Requires-Dist: httpx<1,>=0.27
|
|
28
|
+
Requires-Dist: pydantic<3,>=2.6
|
|
29
|
+
Requires-Dist: python-dateutil>=2.8
|
|
30
|
+
Provides-Extra: codegen
|
|
31
|
+
Requires-Dist: openapi-python-client==0.29.0; extra == 'codegen'
|
|
32
|
+
Provides-Extra: signalr
|
|
33
|
+
Requires-Dist: signalrcore>=0.9.5; extra == 'signalr'
|
|
34
|
+
Provides-Extra: test
|
|
35
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'test'
|
|
36
|
+
Requires-Dist: pytest>=8; extra == 'test'
|
|
37
|
+
Requires-Dist: respx>=0.21; extra == 'test'
|
|
38
|
+
Description-Content-Type: text/markdown
|
|
39
|
+
|
|
40
|
+
# CPlugin SaaS WebAPI — Python SDK
|
|
41
|
+
|
|
42
|
+
Python client for the MyWebAPI.com trading platform management API (v2).
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install mywebapi-sdk # REST client
|
|
48
|
+
pip install "mywebapi-sdk[signalr]" # plus the experimental real-time client
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The distribution is `mywebapi-sdk`; the import name is `cplugin_webapi_sdk`. Until the first release is on PyPI, install from a checkout of this repository:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install -e ".[test]"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This installs `cplugin_webapi_sdk` plus the test dependencies. Use `.[codegen]` to add the code-generation toolchain (see [Regenerate](#regenerate)).
|
|
58
|
+
|
|
59
|
+
## Environment presets
|
|
60
|
+
|
|
61
|
+
The client ships with two environment presets. Pass `env=` at construction time — no URL configuration needed:
|
|
62
|
+
|
|
63
|
+
| `env=` | API base URL | Auth URL |
|
|
64
|
+
|--------------|-------------------------------------|-------------------------------------|
|
|
65
|
+
| `"prod"` | `https://cloud.mywebapi.com` | `https://auth.cplugin.net` |
|
|
66
|
+
| `"staging"` | `https://pre.mywebapi.com` | `https://pre.auth.cplugin.net` |
|
|
67
|
+
| `"custom"` | supply `api_base_url=` + `authority=` | — |
|
|
68
|
+
|
|
69
|
+
Credentials (client ID and secret) are managed through the **CPlugin Toolbox**:
|
|
70
|
+
|
|
71
|
+
- Staging: <https://pre.toolbox.cplugin.com>
|
|
72
|
+
- Production: <https://toolbox.cplugin.com>
|
|
73
|
+
|
|
74
|
+
## Quick start
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
import os
|
|
78
|
+
from cplugin_webapi_sdk import CPluginWebApiClient, ApiError
|
|
79
|
+
|
|
80
|
+
# * The client manages OAuth2 token acquisition, caching, and refresh
|
|
81
|
+
# * transparently — pass credentials once, call methods on .mt4 / .mt5.
|
|
82
|
+
with CPluginWebApiClient(
|
|
83
|
+
env="staging",
|
|
84
|
+
client_id=os.environ["WEBAPI_CLIENT_ID"],
|
|
85
|
+
client_secret=os.environ["WEBAPI_CLIENT_SECRET"],
|
|
86
|
+
) as client:
|
|
87
|
+
# Discover configured trade platforms
|
|
88
|
+
platforms = client.list_trade_platforms()
|
|
89
|
+
tp = platforms[0]["id"]
|
|
90
|
+
|
|
91
|
+
# server time (mt4 namespace)
|
|
92
|
+
print("server time (mt4):", client.mt4.get_server_time(tp))
|
|
93
|
+
|
|
94
|
+
# server time (mt5 namespace)
|
|
95
|
+
print("server time (mt5):", client.mt5.get_server_time(tp))
|
|
96
|
+
|
|
97
|
+
# Error handling
|
|
98
|
+
try:
|
|
99
|
+
client.mt4.get_user_record(tp, 99999999)
|
|
100
|
+
except ApiError as e:
|
|
101
|
+
print(f"Error [{e.code}]: {e.description}")
|
|
102
|
+
if e.activity_id:
|
|
103
|
+
print(" Activity ID:", e.activity_id)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Static token (advanced / testing)
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from cplugin_webapi_sdk import CPluginWebApiClient
|
|
110
|
+
|
|
111
|
+
client = CPluginWebApiClient(env="staging", token="your-bearer-token")
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Async
|
|
115
|
+
|
|
116
|
+
An `async with`-compatible counterpart is available as `CPluginWebApiAsyncClient`:
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
import asyncio, os
|
|
120
|
+
from cplugin_webapi_sdk import CPluginWebApiAsyncClient
|
|
121
|
+
|
|
122
|
+
async def main():
|
|
123
|
+
async with CPluginWebApiAsyncClient(
|
|
124
|
+
env="staging",
|
|
125
|
+
client_id=os.environ["WEBAPI_CLIENT_ID"],
|
|
126
|
+
client_secret=os.environ["WEBAPI_CLIENT_SECRET"],
|
|
127
|
+
) as client:
|
|
128
|
+
t = await client.mt4.get_server_time(tp)
|
|
129
|
+
print(t)
|
|
130
|
+
|
|
131
|
+
asyncio.run(main())
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Timeouts and retries
|
|
135
|
+
|
|
136
|
+
Every call addressed to a trade platform has a deadline on the server. When the trading platform does not answer in time, the API still answers — with an error that says whether the operation can have been applied. Default deadlines per operation: trade 5 s, read 10 s, change 15 s, history and reports 30 s, server maintenance 60 s. The API reference lists the default of each operation.
|
|
137
|
+
|
|
138
|
+
Set your own deadline, in seconds from 1 to 300, for the whole client or for one call:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from cplugin_webapi_sdk import CPluginWebApiClient
|
|
142
|
+
|
|
143
|
+
client = CPluginWebApiClient(env="staging", client_id=..., client_secret=..., request_timeout=20)
|
|
144
|
+
|
|
145
|
+
client.mt4.get_server_time(tp, request_timeout=3) # one call
|
|
146
|
+
resp = client.mt4.raw(op_module, trade_platform=tp, request_timeout=120) # any generated operation
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
The value is sent as the `X-Request-Timeout` header; a value outside 1–300 raises `ValueError` before anything is sent. The HTTP client waits at least 30 s longer than the deadline you set: the server may add up to 20 s for connecting to the trading platform, and the rest covers the network. The server's deadline starts after it has read the request and taken the idempotency key, so on a very slow network or database the client can still give up first — raise `timeout=` for such an environment. Without `request_timeout` the same margin is added to the operation's default deadline from the API reference (60 s for an operation that documents none). The client-wide HTTP timeout (`timeout=`, default 30 s) is the floor and is never shortened.
|
|
150
|
+
|
|
151
|
+
When the deadline passes, `ApiError` carries the code and the `X-Request-Outcome` header:
|
|
152
|
+
|
|
153
|
+
| `e.code` | `e.outcome` | What happened | Retry? |
|
|
154
|
+
|---|---|---|---|
|
|
155
|
+
| `Timeout` | `timeout` | A read did not finish. Nothing was changed. | Safe |
|
|
156
|
+
| `Busy` | `not-started` | Too many requests wait for this trading platform; this one was not sent. | Safe |
|
|
157
|
+
| `OutcomeUnknown` | `unknown` | A trade or change did not finish and **may still be applied**. | Check first |
|
|
158
|
+
| `OutcomeUnknown` | `in-progress` | A request with the same `Idempotency-Key` is still running; this one was not executed. | Same key |
|
|
159
|
+
|
|
160
|
+
`e.applied_timeout` is the deadline the server used (`X-Request-Timeout-Applied`), `e.headers` all response headers. `is_safe_to_retry(e)` and `is_outcome_unknown(e)` (also `e.safe_to_retry` / `e.outcome_unknown`) classify an error; `ErrorCode` and `RequestOutcome` hold the values:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
import uuid
|
|
164
|
+
from cplugin_webapi_sdk import ApiError, is_outcome_unknown, is_safe_to_retry
|
|
165
|
+
|
|
166
|
+
key = str(uuid.uuid4()) # one key per logical operation, kept across repeats
|
|
167
|
+
try:
|
|
168
|
+
client.mt4.patch_user_record(tp, login, {"leverage": 200}, idempotency_key=key)
|
|
169
|
+
except ApiError as e:
|
|
170
|
+
if is_outcome_unknown(e):
|
|
171
|
+
# * Never repeat blindly — for a trade that means a second trade.
|
|
172
|
+
# Repeat with the SAME key: while the first request still runs you get
|
|
173
|
+
# OutcomeUnknown / in-progress again; once it has finished you get its
|
|
174
|
+
# real result, and it is not executed a second time.
|
|
175
|
+
...
|
|
176
|
+
elif is_safe_to_retry(e):
|
|
177
|
+
... # Timeout or Busy: nothing was applied, repeat when you like
|
|
178
|
+
else:
|
|
179
|
+
raise
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
After `OutcomeUnknown`, repeating with the same key returns the real result for at least one hour after the operation finished on the trading platform. (An answer that arrived in time is kept for the key for one minute.) Without an idempotency key, or when in doubt, check the result yourself (orders, positions, balance, the changed record) before repeating an `OutcomeUnknown` request. If the outcome of a timed-out operation cannot be determined, the server keeps the key taken for one hour; after that, check the outcome and use a new key.
|
|
183
|
+
|
|
184
|
+
The SDK does not repeat a request because of a timeout or an error code. `retries=` (default 2) only repeats opening the connection, before any byte of the request is sent. With client-credentials auth, a request answered `401` is sent once more with a fresh token; the server refuses an unauthenticated request before running it. An `httpx` transport error (`httpx.ReadTimeout`, a dropped connection) or an `InvalidResponse` error from a proxy page leaves a trade or change just as unknown as `OutcomeUnknown` does — treat it the same way.
|
|
185
|
+
|
|
186
|
+
Real-time: hub calls addressed to a trading platform, and connecting to a hub, fail after 60 s; streams are not affected.
|
|
187
|
+
|
|
188
|
+
## Flag fields
|
|
189
|
+
|
|
190
|
+
User rights, group permissions and symbol flags are strings with the names of the set bits: `"Enabled, Password"`, `"None"` when no bit is set. A bit the API has no name for arrives as `"Bit<n>"` — keep it when you write the value back. The helpers work on that form:
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
from cplugin_webapi_sdk import has_flag, with_flag
|
|
194
|
+
|
|
195
|
+
if not has_flag(user.rights, "Readonly"):
|
|
196
|
+
user.rights = with_flag(user.rights, "Readonly") # other bits are kept
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
`parse_flags` / `format_flags` convert to and from a list of names. The bit values of every flag type are in the OpenAPI spec (`x-enum-varnames`, `x-enum-values`).
|
|
200
|
+
|
|
201
|
+
## Pagination
|
|
202
|
+
|
|
203
|
+
Paginated endpoints return `(items, meta)`. Use the built-in helpers to iterate:
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
import os
|
|
207
|
+
|
|
208
|
+
from cplugin_webapi_sdk import CPluginWebApiClient, paginate_sync, collect_all_sync
|
|
209
|
+
|
|
210
|
+
with CPluginWebApiClient(
|
|
211
|
+
env="staging",
|
|
212
|
+
client_id=os.environ["WEBAPI_CLIENT_ID"],
|
|
213
|
+
client_secret=os.environ["WEBAPI_CLIENT_SECRET"],
|
|
214
|
+
) as client:
|
|
215
|
+
tp = client.list_trade_platforms()[0]["id"]
|
|
216
|
+
|
|
217
|
+
# * Iterate page by page — no full dataset loaded into memory at once.
|
|
218
|
+
for page in paginate_sync(
|
|
219
|
+
lambda cur: client.mt4.users_request(tp, cursor=cur, limit=100)
|
|
220
|
+
):
|
|
221
|
+
for user in page:
|
|
222
|
+
print(user.get("login"), user.get("balance"))
|
|
223
|
+
|
|
224
|
+
# * Or collect everything into a single flat list.
|
|
225
|
+
all_trades = collect_all_sync(
|
|
226
|
+
lambda cur: client.mt4.trades_request(tp, cursor=cur, limit=200)
|
|
227
|
+
)
|
|
228
|
+
print(f"Total open trades: {len(all_trades)}")
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Async equivalents: `paginate_async` / `collect_all_async`.
|
|
232
|
+
|
|
233
|
+
## Real-time / SignalR
|
|
234
|
+
|
|
235
|
+
Real-time streaming is available via the optional `signalr` extra, which installs the community `signalrcore` library (`pip install "mywebapi-sdk[signalr]"`). The `.realtime` accessor is **EXPERIMENTAL**:
|
|
236
|
+
|
|
237
|
+
```python
|
|
238
|
+
rt = client.realtime.mt4(trade_platform) # or client.realtime.mt5(trade_platform)
|
|
239
|
+
rt.start()
|
|
240
|
+
rt.stream_ticks("EURUSD").subscribe({
|
|
241
|
+
"next": lambda tick: print(tick),
|
|
242
|
+
"complete": lambda: print("done"),
|
|
243
|
+
"error": lambda err: print("error:", err),
|
|
244
|
+
})
|
|
245
|
+
...
|
|
246
|
+
rt.stop()
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
The `mt4` hubs stream ticks, trades, margin-call events, user updates, and symbol config changes; the `mt5` hubs stream connection status and margin-call updates.
|
|
250
|
+
|
|
251
|
+
> **Note:** The `realtime` namespace requires `signalrcore` to be installed. The REST surface (`mt4`, `mt5`, `list_trade_platforms`) works without it.
|
|
252
|
+
|
|
253
|
+
## Regenerate
|
|
254
|
+
|
|
255
|
+
The endpoint layer is generated from the vendored OpenAPI spec `src/cplugin_webapi_sdk/spec/v2.json`:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Install codegen dependencies
|
|
259
|
+
pip install -e ".[codegen]"
|
|
260
|
+
|
|
261
|
+
# Refresh the vendored spec from staging (main service and x86 sidecar, merged)
|
|
262
|
+
python scripts/fetch_spec.py
|
|
263
|
+
|
|
264
|
+
# Regenerate the generated client layer
|
|
265
|
+
python scripts/generate_client.py
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The regenerated output lands in `src/cplugin_webapi_sdk/_generated/` and is never edited by hand. `generate_client.py` drops the documented default of the `X-Request-Timeout` header before generating, so a generated call sends the header only when a timeout is set, and writes those defaults to `_generated/operation_timeouts.py`, from which the client sizes its HTTP timeout.
|
|
269
|
+
|
|
270
|
+
## Develop
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Run the hermetic unit/contract suite (fast, no network)
|
|
274
|
+
python -m pytest -q
|
|
275
|
+
|
|
276
|
+
# Run the gated staging E2E (requires live credentials)
|
|
277
|
+
WEBAPI_E2E=1 \
|
|
278
|
+
WEBAPI_CLIENT_ID=your-id \
|
|
279
|
+
WEBAPI_CLIENT_SECRET=your-secret \
|
|
280
|
+
WEBAPI_TRADE_PLATFORM=your-tp-uuid \
|
|
281
|
+
python -m pytest e2e -q
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Layout
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
.
|
|
288
|
+
├── src/cplugin_webapi_sdk/
|
|
289
|
+
│ ├── _generated/ # auto-generated endpoint modules and DTOs
|
|
290
|
+
│ ├── spec/v2.json # vendored OpenAPI spec the generated layer is built from
|
|
291
|
+
│ ├── auth.py # OAuth2 client credentials + static bearer auth
|
|
292
|
+
│ ├── client.py # CPluginWebApiClient / CPluginWebApiAsyncClient
|
|
293
|
+
│ ├── discovery.py # OIDC discovery for the token endpoint
|
|
294
|
+
│ ├── envelope.py # response envelope Pydantic models
|
|
295
|
+
│ ├── environments.py # env presets (prod / staging / custom)
|
|
296
|
+
│ ├── errors.py # ApiError exception type
|
|
297
|
+
│ ├── flags.py # flag-field helpers
|
|
298
|
+
│ ├── pagination.py # paginate_sync/async, collect_all_sync/async
|
|
299
|
+
│ ├── realtime.py # experimental SignalR clients
|
|
300
|
+
│ ├── timeouts.py # request timeouts, error codes, retry classification
|
|
301
|
+
│ └── unwrap.py # envelope unwrap helpers
|
|
302
|
+
├── examples/
|
|
303
|
+
│ └── 01_hello.py # runnable quickstart
|
|
304
|
+
├── e2e/
|
|
305
|
+
│ └── test_e2e.py # gated staging E2E test
|
|
306
|
+
├── tests/ # hermetic unit and contract tests
|
|
307
|
+
└── scripts/ # fetch_spec.py, generate_client.py
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
MetaTrader, MT4, MT5, and MetaQuotes are trademarks or registered trademarks of MetaQuotes Ltd. This project is not affiliated with, endorsed by, or sponsored by MetaQuotes Ltd.
|