mywebapi-sdk 0.3.0__tar.gz
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.
- mywebapi_sdk-0.3.0/.env.example +22 -0
- mywebapi_sdk-0.3.0/.github/workflows/ci.yml +57 -0
- mywebapi_sdk-0.3.0/.github/workflows/publish.yml +94 -0
- mywebapi_sdk-0.3.0/.gitignore +9 -0
- mywebapi_sdk-0.3.0/CHANGELOG.md +34 -0
- mywebapi_sdk-0.3.0/LICENSE +21 -0
- mywebapi_sdk-0.3.0/PKG-INFO +312 -0
- mywebapi_sdk-0.3.0/PUBLISHING.md +62 -0
- mywebapi_sdk-0.3.0/README.md +273 -0
- mywebapi_sdk-0.3.0/e2e/test_e2e.py +100 -0
- mywebapi_sdk-0.3.0/examples/01_hello.py +63 -0
- mywebapi_sdk-0.3.0/openapi_python_client_config.yaml +8 -0
- mywebapi_sdk-0.3.0/pyproject.toml +64 -0
- mywebapi_sdk-0.3.0/scripts/fetch_spec.py +48 -0
- mywebapi_sdk-0.3.0/scripts/generate_client.py +147 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/__init__.py +79 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/__init__.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_check_login.py +306 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_set_login.py +377 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_orders_mode.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_users_mode.py +262 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_orders_file.py +285 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_users_file.py +325 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_orders.py +332 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_users.py +344 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_common/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_journal_request.py +326 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_manager_common.py +229 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_server_time.py +225 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_access.py +280 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_backup.py +241 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_common.py +237 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_data_server.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_feeder.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_account.py +280 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_markup.py +280 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_rule.py +272 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_holiday.py +296 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_live_update.py +272 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_manager.py +272 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_sync.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_time.py +245 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_access_pos.py +254 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_data_server_pos.py +234 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_feeder_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_account_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_markup_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_rule_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_holiday_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_live_update_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_manager_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_symbol_pos.py +238 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_sync_pos.py +230 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_access_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_data_server_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_feeder_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_account_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_markup_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_rule_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_group_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_holiday_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_live_update_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_manager_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_plugin_pos.py +266 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_symbol_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_sync_pos.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_access_pos.py +378 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_backup.py +361 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_common.py +389 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_data_server_pos.py +354 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_feeder.py +305 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_account.py +361 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_markup.py +345 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_rule.py +377 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_holiday_pos.py +350 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_live_update.py +385 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_manager.py +385 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_symbol_group_pos.py +342 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_sync.py +349 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_time.py +421 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_ensure_group_name_exist_group.py +274 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_record_get_group.py +242 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_groups_get_group.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_margins_get_group.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_get.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_request.py +256 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/patch_api_v_2_mt4_trade_platform_group_record_group.py +255 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/post_api_v_2_mt4_trade_platform_group_record_update_group.py +542 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_history/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_history/get_api_v_2_mt4_trade_platform_trades_user_history_login.py +292 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/get_api_v_2_mt4_trade_platform_mail_last.py +225 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_get_login.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_request_login.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margins_get.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_body_get_key.py +238 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_get.py +237 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_topic_get_pos.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_total.py +225 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/post_api_v_2_mt4_trade_platform_news_body_request_key.py +254 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_online/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_get.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_request.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/post_api_v_2_mt4_trade_platform_external_command_json.py +309 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_chart_request_symbol.py +332 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last_symbol.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_ticks_request_symbol.py +311 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_add_symbol.py +375 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_delete_symbol.py +375 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_update_symbol.py +367 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_history_correct_symbol.py +274 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request.py +362 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request_ex.py +334 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_performance_request.py +281 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_reports_request.py +370 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_read.py +253 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_start.py +289 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_license_check_license_name.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeder_log_name.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeders.py +288 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/post_api_v_2_mt4_trade_platform_notifications_send.py +289 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_charts_sync.py +257 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_feeds_restart.py +253 -0
- mywebapi_sdk-0.3.0/src/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
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_restart.py +281 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_snapshot.py +245 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_sync_read.py +249 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_snapshot.py +257 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_sync_read.py +253 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/post_api_v_2_mt4_trade_platform_external_command_binary.py +393 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/get_api_v_2_mt4_trade_platform_mails_request.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_mail_send.py +317 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_news_send.py +309 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_cfg_request_plugin.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugin_param_get_pos.py +242 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugins_get.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_cfg_update_plugin.py +301 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_plugin_update.py +293 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol.py +229 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol_symbol.py +242 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_get.py +253 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_updated.py +268 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_sessions_get_symbol.py +258 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbols_groups_get.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/patch_api_v_2_mt4_trade_platform_symbol_config_symbol.py +255 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_cfg_update_symbol_symbol.py +530 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_add_symbol.py +270 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_change.py +417 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_hide_symbol.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_send_tick.py +319 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbols_refresh.py +233 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_adm_trades_request_group.py +266 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_get_order.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_request_order.py +258 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_records_request.py +278 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get.py +252 -0
- mywebapi_sdk-0.3.0/src/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
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_market.py +229 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_symbol.py +249 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_ticket.py +254 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_request.py +299 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trade_record_modify_ticket.py +462 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trades_delete.py +290 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_check_stops.py +453 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_clear_rollback_order.py +262 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_transaction.py +453 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trades_sync_start.py +261 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check.py +266 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check_login.py +266 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_users_request_safe_group.py +274 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_get_login.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_request_login.py +250 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_records_request.py +274 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_users_request.py +276 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/patch_api_v_2_mt4_trade_platform_user_record_login.py +283 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_adm_balance_fix.py +290 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_new.py +465 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_update_login.py +678 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_group_op.py +349 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_sync_start.py +273 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_common/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_server_time.py +205 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_time_get.py +205 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/get_api_v_2_mt5_trade_platform_group_get_group.py +218 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/patch_api_v_2_mt5_trade_platform_group_record_group.py +255 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/get_api_v_2_mt5_trade_platform_manager_current.py +205 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/get_api_v_2_mt5_trade_platform_symbol_get_symbol.py +218 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/patch_api_v_2_mt5_trade_platform_symbol_record_symbol.py +255 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_deal_by_group_mask.py +265 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_order_by_group_mask.py +265 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_position_by_group_mask.py +265 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_users/__init__.py +1 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_users/get_api_v_2_mt5_trade_platform_user_get_login.py +218 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_users/patch_api_v_2_mt5_trade_platform_user_record_login.py +255 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/client.py +271 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/errors.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/__init__.py +469 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/activation_modes.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/activation_type.py +15 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/api_error.py +135 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/api_meta.py +114 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/arc_backup_execution_period.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/arc_backup_store_period.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/backup_execution_period.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/backup_store_period.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/boolean_api_response.py +143 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/chart_period.py +15 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/data_feed_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/date_time_api_response.py +154 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/deal_action.py +27 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/deal_reason.py +26 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_auth_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_auth_otp_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_calc_mode.py +21 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_chart_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_action_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_charge_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_entry_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_profit_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_range_mode.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_commission_mode.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_commission_volume_type.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_execution_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_free_margin_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_gateway_account_flags.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_gtc_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_history_limit.py +13 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_industries.py +172 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_instant_mode.py +7 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_log_type.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_mail_mode.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_manager_limit.py +13 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_manager_rights.py +82 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_margin_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_news_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_option_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_reports_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_sectors.py +22 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_splice_time_type.py +7 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_splice_type.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_stop_out_mode.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_swap_days.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_swap_mode.py +16 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_trade_mode.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_transfer_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/entry_flag.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/export_execution_period.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/gtc_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/int_32_api_response.py +143 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response.py +170 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response_data_type_0.py +107 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node.py +155 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node_api_response.py +170 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node_options.py +60 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_calculation_mode.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_controlling_type.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_level_type.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access.py +106 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access_api_response.py +173 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup.py +442 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_info.py +107 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_info_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff.py +74 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_bar.py +121 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_bar_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_write_request.py +103 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common.py +124 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common_api_response.py +172 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common_update.py +201 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_daily_report.py +212 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_daily_report_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server.py +153 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_request.py +77 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response.py +74 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response_api_response.py +171 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder.py +235 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder_api_response.py +172 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account.py +190 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup.py +157 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule.py +234 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_api_response.py +177 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group.py +505 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_api_response.py +193 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_margin.py +104 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_margin_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_sec.py +321 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_sec_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_update.py +467 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday.py +153 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update.py +165 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update_api_response.py +177 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_box.py +148 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_box_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_send_request.py +160 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights.py +338 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights_api_response.py +175 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level.py +201 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_send_request.py +127 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic.py +177 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic_api_response.py +178 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_notifications_send_request.py +114 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_online.py +88 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_online_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_performance.py +124 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_performance_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin.py +153 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_config.py +96 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param.py +137 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param_api_response.py +171 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_log.py +151 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_log_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_time.py +95 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_time_api_response.py +178 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_change_request.py +148 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config.py +683 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_api_response.py +177 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_update.py +608 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions.py +171 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group.py +99 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group_api_response.py +174 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info.py +210 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info_api_response.py +178 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_session.py +91 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync.py +176 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync_api_response.py +173 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info.py +117 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info_api_response.py +175 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_record.py +126 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_record_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade.py +409 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_api_response.py +179 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_input.py +274 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result.py +72 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_transaction.py +262 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_transaction_api_response.py +181 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_update.py +165 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user.py +533 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_api_response.py +184 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_create.py +420 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_restore_input.py +193 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_update.py +441 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_users_group_op.py +140 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_comm_tier.py +246 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_commission.py +409 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group.py +1162 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group_api_response.py +170 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group_commissions_type_0.py +83 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_manager.py +227 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_manager_api_response.py +156 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_deal.py +1045 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_deal_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_order.py +1008 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_order_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_position.py +829 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_position_list_api_response.py +180 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol.py +2743 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_api_response.py +170 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_initial_type_0.py +124 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_maintenance_type_0.py +124 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_session.py +182 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_time.py +101 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_time_api_response.py +170 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_user.py +752 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_user_api_response.py +172 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/news_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_filling.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_reason.py +26 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_state.py +16 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_time.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_type.py +15 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/otp_mode.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/paging_meta.py +88 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_group_record_group_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_symbol_config_symbol_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_user_record_login_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_group_record_group_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_symbol_record_symbol_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_user_record_login_json_body.py +66 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/position_actions.py +8 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/position_reasons.py +26 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/profit_calculation_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/request_mode.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/result_code.py +46 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/server_role.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/string_api_response.py +155 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/swap_type.py +10 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/symbol_exec_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/symbol_price_direction.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/synchronization_mode.py +11 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_command.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_record_reason.py +14 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_record_state.py +13 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/watchdog_failover_mode.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/watchdog_state.py +9 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/web_api_error_code.py +17 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/operation_timeouts.py +181 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/types.py +53 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/auth.py +278 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/client.py +1215 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/discovery.py +109 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/envelope.py +77 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/environments.py +45 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/errors.py +79 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/flags.py +36 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/pagination.py +141 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/realtime.py +408 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/spec/v2.json +21293 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/timeouts.py +197 -0
- mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/unwrap.py +153 -0
- mywebapi_sdk-0.3.0/tests/__init__.py +0 -0
- mywebapi_sdk-0.3.0/tests/conftest.py +121 -0
- mywebapi_sdk-0.3.0/tests/fixtures/openid-configuration.json +84 -0
- mywebapi_sdk-0.3.0/tests/test_auth.py +349 -0
- mywebapi_sdk-0.3.0/tests/test_client.py +532 -0
- mywebapi_sdk-0.3.0/tests/test_environments.py +23 -0
- mywebapi_sdk-0.3.0/tests/test_errors_envelope.py +42 -0
- mywebapi_sdk-0.3.0/tests/test_flags.py +41 -0
- mywebapi_sdk-0.3.0/tests/test_generated_contract.py +47 -0
- mywebapi_sdk-0.3.0/tests/test_generated_smoke.py +78 -0
- mywebapi_sdk-0.3.0/tests/test_pagination.py +188 -0
- mywebapi_sdk-0.3.0/tests/test_realtime.py +232 -0
- mywebapi_sdk-0.3.0/tests/test_timeouts.py +491 -0
- mywebapi_sdk-0.3.0/tests/test_unwrap.py +256 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# CPlugin WebAPI Python SDK — example environment.
|
|
2
|
+
# Copy to `.env` (gitignored) and fill in your credentials: cp .env.example .env
|
|
3
|
+
|
|
4
|
+
# --- Environment (staging is the safe default) ---
|
|
5
|
+
# The SDK selects an environment by name; for the examples/e2e you pass
|
|
6
|
+
# env="staging" (or "prod") in code. These vars feed the example scripts.
|
|
7
|
+
|
|
8
|
+
# --- Credentials (required) ---
|
|
9
|
+
# Create and manage API keys in the Toolbox (https://toolbox.cplugin.com for prod,
|
|
10
|
+
# https://pre.toolbox.cplugin.com for staging).
|
|
11
|
+
WEBAPI_CLIENT_ID=your-client-id
|
|
12
|
+
WEBAPI_CLIENT_SECRET=your-client-secret
|
|
13
|
+
|
|
14
|
+
# --- Optional ---
|
|
15
|
+
# Trade platform GUID. Created and managed in the Toolbox. Leave empty and run
|
|
16
|
+
# `python examples/01_hello.py` to list the platforms your credentials can access.
|
|
17
|
+
WEBAPI_TRADE_PLATFORM=
|
|
18
|
+
|
|
19
|
+
# --- End-to-end tests (opt-in) ---
|
|
20
|
+
# Set WEBAPI_E2E=1 together with the credentials above to run the gated e2e
|
|
21
|
+
# suite against staging: WEBAPI_E2E=1 python -m pytest e2e -q
|
|
22
|
+
WEBAPI_E2E=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
test:
|
|
9
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ['3.10', '3.11', '3.12', '3.13']
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
|
|
24
|
+
- name: Install package + test deps
|
|
25
|
+
# * Editable install so the package imports as `cplugin_webapi_sdk`.
|
|
26
|
+
# signalrcore is NOT installed: the realtime unit tests monkeypatch the
|
|
27
|
+
# lazy import, so they run without the optional extra.
|
|
28
|
+
run: python -m pip install --upgrade pip && python -m pip install -e ".[test]"
|
|
29
|
+
|
|
30
|
+
- name: Run tests
|
|
31
|
+
# * The e2e suite is double-gated (WEBAPI_E2E + credentials, and signalrcore
|
|
32
|
+
# for the SignalR smoke); with neither present it skips cleanly, so unit
|
|
33
|
+
# and contract tests run hermetically in CI with no extra setup.
|
|
34
|
+
run: python -m pytest -q
|
|
35
|
+
|
|
36
|
+
build:
|
|
37
|
+
name: Build sdist + wheel
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
- name: Set up Python
|
|
43
|
+
uses: actions/setup-python@v5
|
|
44
|
+
with:
|
|
45
|
+
python-version: '3.12'
|
|
46
|
+
|
|
47
|
+
- name: Build distributions
|
|
48
|
+
run: python -m pip install --upgrade build && python -m build
|
|
49
|
+
|
|
50
|
+
- name: Twine check
|
|
51
|
+
run: python -m pip install --upgrade twine && python -m twine check dist/*
|
|
52
|
+
|
|
53
|
+
- name: Upload build artifacts
|
|
54
|
+
uses: actions/upload-artifact@v4
|
|
55
|
+
with:
|
|
56
|
+
name: dist
|
|
57
|
+
path: dist/
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# * Triggered by pushing a version tag (e.g. v0.1.0, v1.2.3).
|
|
4
|
+
# * Uses PyPI Trusted Publishing (OIDC) — NO long-lived PYPI_TOKEN, nothing to rotate.
|
|
5
|
+
# * Unlike npm, PyPI supports a "pending publisher": you can configure the trusted
|
|
6
|
+
# * publisher BEFORE the first release, so no bootstrap-token publish is needed.
|
|
7
|
+
# * On pypi.org: Account/Project → Publishing → Add a GitHub Actions publisher →
|
|
8
|
+
# * owner=<org>, repo=<repo>, workflow=publish.yml, environment=pypi.
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
push:
|
|
12
|
+
tags:
|
|
13
|
+
- 'v*'
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
# * Release gate: a tag publishes only a commit that reached main through a merged pull
|
|
17
|
+
# request and passed CI there. Tags are admin-only and immutable (repository rulesets);
|
|
18
|
+
# this job refuses a tag put on any other commit, so review happens on the pull request.
|
|
19
|
+
gate:
|
|
20
|
+
name: Release gate
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
actions: read
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
- name: Tagged commit is on main and passed CI
|
|
30
|
+
env:
|
|
31
|
+
GH_TOKEN: ${{ github.token }}
|
|
32
|
+
run: |
|
|
33
|
+
set -euo pipefail
|
|
34
|
+
git fetch --no-tags origin main
|
|
35
|
+
if ! git merge-base --is-ancestor "$GITHUB_SHA" origin/main; then
|
|
36
|
+
echo "::error::$GITHUB_REF_NAME points to $GITHUB_SHA, which is not on main. Release only commits merged into main."
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
passed=$(gh api "repos/$GITHUB_REPOSITORY/actions/workflows/ci.yml/runs?head_sha=$GITHUB_SHA&status=success&per_page=1" --jq '.total_count')
|
|
40
|
+
if [ "$passed" -lt 1 ]; then
|
|
41
|
+
echo "::error::CI has not passed on $GITHUB_SHA. Wait for it on main, then push the tag again."
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
echo "$GITHUB_REF_NAME -> $GITHUB_SHA: on main, CI passed."
|
|
45
|
+
|
|
46
|
+
build:
|
|
47
|
+
name: Build sdist + wheel
|
|
48
|
+
needs: gate
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Set up Python
|
|
54
|
+
uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: '3.12'
|
|
57
|
+
|
|
58
|
+
- name: Build distributions
|
|
59
|
+
run: python -m pip install --upgrade build && python -m build
|
|
60
|
+
|
|
61
|
+
- name: Twine check
|
|
62
|
+
run: python -m pip install --upgrade twine && python -m twine check dist/*
|
|
63
|
+
|
|
64
|
+
- name: Upload build artifacts
|
|
65
|
+
uses: actions/upload-artifact@v4
|
|
66
|
+
with:
|
|
67
|
+
name: dist
|
|
68
|
+
path: dist/
|
|
69
|
+
|
|
70
|
+
publish:
|
|
71
|
+
name: Publish to PyPI (OIDC trusted publishing)
|
|
72
|
+
needs: build
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
# * A GitHub Environment named "pypi" lets you add release protection rules
|
|
75
|
+
# (required reviewers, tag restrictions) and is the conventional pairing
|
|
76
|
+
# with a PyPI trusted publisher scoped to that environment.
|
|
77
|
+
environment:
|
|
78
|
+
name: pypi
|
|
79
|
+
url: https://pypi.org/p/mywebapi-sdk
|
|
80
|
+
permissions:
|
|
81
|
+
# ! Required for OIDC trusted publishing — mints the short-lived id-token
|
|
82
|
+
# PyPI verifies. No API token is stored anywhere.
|
|
83
|
+
id-token: write
|
|
84
|
+
steps:
|
|
85
|
+
- name: Download build artifacts
|
|
86
|
+
uses: actions/download-artifact@v4
|
|
87
|
+
with:
|
|
88
|
+
name: dist
|
|
89
|
+
path: dist/
|
|
90
|
+
|
|
91
|
+
- name: Publish
|
|
92
|
+
# * No password/token input: the action exchanges the workflow's OIDC
|
|
93
|
+
# id-token for a short-lived PyPI upload credential.
|
|
94
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `mywebapi-sdk` (import name `cplugin_webapi_sdk`). The package follows [semver](https://semver.org/); while it is at `0.x`, a minor release may contain breaking changes.
|
|
4
|
+
|
|
5
|
+
## 0.3.0
|
|
6
|
+
|
|
7
|
+
First release on PyPI. The version continues the numbering of the JavaScript, .NET and PowerShell SDKs, which ship the same features as 0.3.0. Request timeouts need a server that answers with `X-Request-Outcome`; older servers ignore the new header and keep working.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `request_timeout=` (seconds, 1–300) on every namespace method and on `raw()`, and client-wide on `CPluginWebApiClient` / `CPluginWebApiAsyncClient`. Sent as `X-Request-Timeout`; an out-of-range value raises `ValueError` before anything is sent. `raw()` also accepts the generated name `x_request_timeout`.
|
|
12
|
+
- The HTTP timeout of every trade-platform call is stretched to at least its server deadline + 30 s — `request_timeout`, else the operation's default from the spec (60 s for an operation that documents none): the server may add up to 20 s for connecting to the trading platform, and the client must not give up before the server says whether the operation was applied. The client-wide `timeout` (still 30 s by default) is the floor and is never shortened.
|
|
13
|
+
- `idempotency_key=` on `patch_user_record()` and `raw()`, sent as `Idempotency-Key` — the safe way to recover from `OutcomeUnknown`.
|
|
14
|
+
- `ApiError.outcome` (`X-Request-Outcome`: `timeout`, `unknown`, `not-started`, `in-progress`), `ApiError.applied_timeout` (`X-Request-Timeout-Applied`), `ApiError.headers`, and the `outcome_unknown` / `safe_to_retry` properties.
|
|
15
|
+
- `is_outcome_unknown(err)`, `is_safe_to_retry(err)`, `ErrorCode` (including the new `Timeout`, `OutcomeUnknown`, `Busy`), `RequestOutcome`, `MIN_REQUEST_TIMEOUT`, `MAX_REQUEST_TIMEOUT`.
|
|
16
|
+
- Flag-field helpers `parse_flags`, `format_flags`, `has_flag`, `with_flag`.
|
|
17
|
+
- README sections "Timeouts and retries" and "Flag fields".
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Regenerated from the current server spec (172 paths). Every trade-platform operation, the MT4 x86 sidecar ones included (plugins, mails and news, batch snapshots and sync reads, `ExternalCommandBinary`), documents its default timeout in its docstring; the generated functions take `x_request_timeout` and send it only when set.
|
|
22
|
+
- Flag fields (user rights, group permissions, symbol, order, position and deal flags) are `str` — the names of the set bits joined by `", "` — instead of single-value enums that rejected every combination. The enum modules `users_rights`, `group_rights`, the `en_*_flags` modules except `en_gateway_account_flags`, `trade_activation_flags`, `trade_modify_flags` and `tick_request_flags` under `_generated.models` are removed.
|
|
23
|
+
- The six v2 `PATCH` operations (MT4 `GroupRecord`, `SymbolConfig`, `UserRecord`; MT5 `GroupRecord`, `UserRecord`, `SymbolRecord`) now take a required `body` — a JSON Merge Patch object with only the fields to change — and `ExternalCommandJSON` takes a required `body` (any JSON value). Previously the spec declared no body, so the generated functions could not send one.
|
|
24
|
+
- `patch_user_record(trade_platform, login, changes)` takes the changed fields as a mapping (wire names, e.g. `{"leverage": 200}`) and sends them; before, it sent no body at all. An empty or non-mapping `changes` is rejected before sending.
|
|
25
|
+
- History calls (30 s server default) and server maintenance (60 s) are no longer cut off by the 30 s client timeout before the server answers.
|
|
26
|
+
- `ApiError` takes an optional fourth argument, the response headers; `unwrap()` passes them from any response that has `.headers`.
|
|
27
|
+
|
|
28
|
+
### Unchanged on purpose
|
|
29
|
+
|
|
30
|
+
- No request is repeated because of a timeout or an error — not on `OutcomeUnknown`, `in-progress`, `Timeout` or `Busy`, not on a transport error. `retries=` repeats only opening the connection, before any byte of the request is sent; the one re-send after a `401` (fresh token) is unchanged, the server refuses an unauthenticated request before running it.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- README: the real-time extra is `signalr`, not `realtime`; the streaming example used a handler as an iterator.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CPlugin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -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.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Publishing
|
|
2
|
+
|
|
3
|
+
## Before the first release
|
|
4
|
+
|
|
5
|
+
1. **Distribution name** — `mywebapi-sdk` (final). PyPI names are a global,
|
|
6
|
+
first-come namespace, so verify it is still free
|
|
7
|
+
(https://pypi.org/project/mywebapi-sdk/) just before the first release.
|
|
8
|
+
The import name stays `cplugin_webapi_sdk` regardless.
|
|
9
|
+
2. **Repository** — `CPlugin/mywebapi.com-sdk-py` (final, mirrors the JS SDK
|
|
10
|
+
`CPlugin/mywebapi.com-sdk-js`). The URLs are set in `pyproject.toml`
|
|
11
|
+
(`[project.urls]`) and `.github/workflows/publish.yml` (`environment.url`).
|
|
12
|
+
3. **Authentication: PyPI Trusted Publishing (OIDC) — no token to store or rotate.**
|
|
13
|
+
- Unlike npm, PyPI supports a **pending publisher**, so you do NOT need a
|
|
14
|
+
bootstrap-token first publish. On https://pypi.org, go to your account
|
|
15
|
+
(or the project, once it exists) → _Publishing → Add a new pending publisher_
|
|
16
|
+
and set: PyPI project name = `mywebapi-sdk`, Owner = `<github-org>`,
|
|
17
|
+
Repository = `<repo>`, Workflow = `publish.yml`, Environment = `pypi`.
|
|
18
|
+
- Create a GitHub **Environment** named `pypi` (Settings → Environments) and,
|
|
19
|
+
optionally, add protection rules (required reviewers, restrict to tags).
|
|
20
|
+
- Every release then publishes via the workflow's OIDC id-token — **no
|
|
21
|
+
`PYPI_TOKEN` secret, nothing to rotate.**
|
|
22
|
+
- (TestPyPI: mirror the same setup at https://test.pypi.org and point the
|
|
23
|
+
publish action at it with `repository-url` to rehearse before going live.)
|
|
24
|
+
|
|
25
|
+
## Releasing a version
|
|
26
|
+
|
|
27
|
+
1. Bump `version` in `pyproject.toml` following [semver](https://semver.org/)
|
|
28
|
+
and add a section for it to `CHANGELOG.md`.
|
|
29
|
+
2. Open a pull request to `main` with the change and the version bump, and merge it once CI is green — `main` accepts changes only through a pull request with passing CI.
|
|
30
|
+
3. Tag the commit and push the tag — the tag must equal `v` + the `pyproject.toml` version:
|
|
31
|
+
```sh
|
|
32
|
+
git tag v0.3.0
|
|
33
|
+
git push origin v0.3.0
|
|
34
|
+
```
|
|
35
|
+
4. The `publish.yml` workflow triggers automatically, builds the sdist + wheel,
|
|
36
|
+
runs `twine check`, and publishes to PyPI via OIDC trusted publishing.
|
|
37
|
+
|
|
38
|
+
## Building locally (sanity check)
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
python -m pip install --upgrade build twine
|
|
42
|
+
python -m build # writes dist/*.whl + dist/*.tar.gz
|
|
43
|
+
python -m twine check dist/*
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Regenerating the client from a new spec
|
|
47
|
+
|
|
48
|
+
The endpoint layer under `src/cplugin_webapi_sdk/_generated/` is generated from the
|
|
49
|
+
canonical OpenAPI spec. To regenerate:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
python -m pip install -e ".[codegen]"
|
|
53
|
+
python scripts/fetch_spec.py # refresh the vendored src/cplugin_webapi_sdk/spec/v2.json
|
|
54
|
+
python scripts/generate_client.py # rewrite _generated/ from the vendored spec
|
|
55
|
+
python -m pytest -q # verify nothing broke
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Release gate
|
|
59
|
+
|
|
60
|
+
- Only repository admins can create `v*` tags; nobody can move or delete one (repository rulesets), so a published version always points at the commit it was built from.
|
|
61
|
+
- `main` accepts changes only through a pull request whose CI passed. Merging that pull request is the review of what will be released.
|
|
62
|
+
- The first job of `publish.yml` (`Release gate`) refuses a tag whose commit is not on `main` or has no successful CI run; nothing is built or published then. Fix it by merging the commit into `main` and tagging the merged commit — a refused tag cannot be moved, so the next version number is used.
|