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.
Files changed (456) hide show
  1. cplugin_webapi_sdk/__init__.py +79 -0
  2. cplugin_webapi_sdk/_generated/__init__.py +8 -0
  3. cplugin_webapi_sdk/_generated/api/__init__.py +1 -0
  4. cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/__init__.py +1 -0
  5. cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_check_login.py +306 -0
  6. cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/post_api_v_2_mt4_trade_platform_user_password_set_login.py +377 -0
  7. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/__init__.py +1 -0
  8. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_orders_mode.py +246 -0
  9. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_info_users_mode.py +262 -0
  10. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_orders_file.py +285 -0
  11. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/get_api_v_2_mt4_trade_platform_backup_request_users_file.py +325 -0
  12. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/__init__.py +1 -0
  13. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_orders.py +332 -0
  14. cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/post_api_v_2_mt4_trade_platform_backup_restore_users.py +344 -0
  15. cplugin_webapi_sdk/_generated/api/mt4_v_2_common/__init__.py +1 -0
  16. cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_journal_request.py +326 -0
  17. cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_manager_common.py +229 -0
  18. cplugin_webapi_sdk/_generated/api/mt4_v_2_common/get_api_v_2_mt4_trade_platform_server_time.py +225 -0
  19. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/__init__.py +1 -0
  20. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_access.py +280 -0
  21. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_backup.py +241 -0
  22. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_common.py +237 -0
  23. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_data_server.py +276 -0
  24. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_feeder.py +276 -0
  25. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_account.py +280 -0
  26. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_markup.py +280 -0
  27. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_gateway_rule.py +272 -0
  28. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_holiday.py +296 -0
  29. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_live_update.py +272 -0
  30. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_manager.py +272 -0
  31. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_sync.py +276 -0
  32. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/get_api_v_2_mt4_trade_platform_cfg_request_time.py +245 -0
  33. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_access_pos.py +254 -0
  34. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_data_server_pos.py +234 -0
  35. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_feeder_pos.py +230 -0
  36. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_account_pos.py +230 -0
  37. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_markup_pos.py +230 -0
  38. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_gateway_rule_pos.py +230 -0
  39. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_holiday_pos.py +230 -0
  40. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_live_update_pos.py +230 -0
  41. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_manager_pos.py +230 -0
  42. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_symbol_pos.py +238 -0
  43. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_delete_sync_pos.py +230 -0
  44. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_access_pos.py +250 -0
  45. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_data_server_pos.py +250 -0
  46. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_feeder_pos.py +250 -0
  47. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_account_pos.py +250 -0
  48. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_markup_pos.py +250 -0
  49. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_gateway_rule_pos.py +250 -0
  50. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_group_pos.py +250 -0
  51. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_holiday_pos.py +250 -0
  52. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_live_update_pos.py +250 -0
  53. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_manager_pos.py +250 -0
  54. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_plugin_pos.py +266 -0
  55. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_symbol_pos.py +250 -0
  56. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_shift_sync_pos.py +250 -0
  57. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_access_pos.py +378 -0
  58. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_backup.py +361 -0
  59. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_common.py +389 -0
  60. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_data_server_pos.py +354 -0
  61. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_feeder.py +305 -0
  62. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_account.py +361 -0
  63. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_markup.py +345 -0
  64. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_gateway_rule.py +377 -0
  65. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_holiday_pos.py +350 -0
  66. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_live_update.py +385 -0
  67. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_manager.py +385 -0
  68. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_symbol_group_pos.py +342 -0
  69. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_sync.py +349 -0
  70. cplugin_webapi_sdk/_generated/api/mt4_v_2_config/post_api_v_2_mt4_trade_platform_cfg_update_time.py +421 -0
  71. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/__init__.py +1 -0
  72. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_ensure_group_name_exist_group.py +274 -0
  73. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_record_get_group.py +242 -0
  74. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_groups_get_group.py +246 -0
  75. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_group_sec_margins_get_group.py +246 -0
  76. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_get.py +233 -0
  77. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/get_api_v_2_mt4_trade_platform_groups_request.py +256 -0
  78. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/patch_api_v_2_mt4_trade_platform_group_record_group.py +255 -0
  79. cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/post_api_v_2_mt4_trade_platform_group_record_update_group.py +542 -0
  80. cplugin_webapi_sdk/_generated/api/mt4_v_2_history/__init__.py +1 -0
  81. cplugin_webapi_sdk/_generated/api/mt4_v_2_history/get_api_v_2_mt4_trade_platform_trades_user_history_login.py +292 -0
  82. cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/__init__.py +1 -0
  83. cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/get_api_v_2_mt4_trade_platform_mail_last.py +225 -0
  84. cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/__init__.py +1 -0
  85. cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_get_login.py +246 -0
  86. cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margin_level_request_login.py +246 -0
  87. cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/get_api_v_2_mt4_trade_platform_margins_get.py +233 -0
  88. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/__init__.py +1 -0
  89. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_body_get_key.py +238 -0
  90. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_get.py +237 -0
  91. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_topic_get_pos.py +246 -0
  92. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/get_api_v_2_mt4_trade_platform_news_total.py +225 -0
  93. cplugin_webapi_sdk/_generated/api/mt4_v_2_news/post_api_v_2_mt4_trade_platform_news_body_request_key.py +254 -0
  94. cplugin_webapi_sdk/_generated/api/mt4_v_2_online/__init__.py +1 -0
  95. cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_get.py +276 -0
  96. cplugin_webapi_sdk/_generated/api/mt4_v_2_online/get_api_v_2_mt4_trade_platform_online_request.py +276 -0
  97. cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/__init__.py +1 -0
  98. cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/post_api_v_2_mt4_trade_platform_external_command_json.py +309 -0
  99. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/__init__.py +1 -0
  100. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_chart_request_symbol.py +332 -0
  101. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last.py +233 -0
  102. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_tick_info_last_symbol.py +250 -0
  103. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/get_api_v_2_mt4_trade_platform_ticks_request_symbol.py +311 -0
  104. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_add_symbol.py +375 -0
  105. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_delete_symbol.py +375 -0
  106. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_chart_update_symbol.py +367 -0
  107. cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/post_api_v_2_mt4_trade_platform_history_correct_symbol.py +274 -0
  108. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/__init__.py +1 -0
  109. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request.py +362 -0
  110. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_daily_reports_request_ex.py +334 -0
  111. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_performance_request.py +281 -0
  112. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/get_api_v_2_mt4_trade_platform_reports_request.py +370 -0
  113. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_read.py +253 -0
  114. cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/post_api_v_2_mt4_trade_platform_daily_sync_start.py +289 -0
  115. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/__init__.py +1 -0
  116. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_license_check_license_name.py +250 -0
  117. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeder_log_name.py +246 -0
  118. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/get_api_v_2_mt4_trade_platform_srv_feeders.py +288 -0
  119. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/post_api_v_2_mt4_trade_platform_notifications_send.py +289 -0
  120. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/__init__.py +1 -0
  121. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_charts_sync.py +257 -0
  122. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_feeds_restart.py +253 -0
  123. 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
  124. cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/post_api_v_2_mt4_trade_platform_srv_restart.py +281 -0
  125. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/__init__.py +1 -0
  126. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_snapshot.py +245 -0
  127. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_trades_sync_read.py +249 -0
  128. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_snapshot.py +257 -0
  129. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/get_api_v_2_mt4_trade_platform_users_sync_read.py +253 -0
  130. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/__init__.py +1 -0
  131. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/post_api_v_2_mt4_trade_platform_external_command_binary.py +393 -0
  132. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/__init__.py +1 -0
  133. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/get_api_v_2_mt4_trade_platform_mails_request.py +233 -0
  134. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_mail_send.py +317 -0
  135. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/post_api_v_2_mt4_trade_platform_news_send.py +309 -0
  136. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/__init__.py +1 -0
  137. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_cfg_request_plugin.py +233 -0
  138. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugin_param_get_pos.py +242 -0
  139. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/get_api_v_2_mt4_trade_platform_plugins_get.py +233 -0
  140. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_cfg_update_plugin.py +301 -0
  141. cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/post_api_v_2_mt4_trade_platform_plugin_update.py +293 -0
  142. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/__init__.py +1 -0
  143. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol.py +229 -0
  144. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_cfg_request_symbol_symbol.py +242 -0
  145. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_get.py +253 -0
  146. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_info_updated.py +268 -0
  147. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbol_sessions_get_symbol.py +258 -0
  148. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/get_api_v_2_mt4_trade_platform_symbols_groups_get.py +233 -0
  149. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/patch_api_v_2_mt4_trade_platform_symbol_config_symbol.py +255 -0
  150. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_cfg_update_symbol_symbol.py +530 -0
  151. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_add_symbol.py +270 -0
  152. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_change.py +417 -0
  153. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_hide_symbol.py +246 -0
  154. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbol_send_tick.py +319 -0
  155. cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/post_api_v_2_mt4_trade_platform_symbols_refresh.py +233 -0
  156. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/__init__.py +1 -0
  157. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_adm_trades_request_group.py +266 -0
  158. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_get_order.py +246 -0
  159. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_record_request_order.py +258 -0
  160. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trade_records_request.py +278 -0
  161. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get.py +252 -0
  162. 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
  163. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_market.py +229 -0
  164. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_by_symbol.py +249 -0
  165. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_get_ticket.py +254 -0
  166. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/get_api_v_2_mt4_trade_platform_trades_request.py +299 -0
  167. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trade_record_modify_ticket.py +462 -0
  168. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_adm_trades_delete.py +290 -0
  169. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_check_stops.py +453 -0
  170. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_clear_rollback_order.py +262 -0
  171. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trade_transaction.py +453 -0
  172. cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/post_api_v_2_mt4_trade_platform_trades_sync_start.py +261 -0
  173. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/__init__.py +1 -0
  174. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check.py +266 -0
  175. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_balance_check_login.py +266 -0
  176. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_adm_users_request_safe_group.py +274 -0
  177. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_get_login.py +250 -0
  178. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_record_request_login.py +250 -0
  179. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_user_records_request.py +274 -0
  180. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/get_api_v_2_mt4_trade_platform_users_request.py +276 -0
  181. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/patch_api_v_2_mt4_trade_platform_user_record_login.py +283 -0
  182. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_adm_balance_fix.py +290 -0
  183. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_new.py +465 -0
  184. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_user_record_update_login.py +678 -0
  185. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_group_op.py +349 -0
  186. cplugin_webapi_sdk/_generated/api/mt4_v_2_users/post_api_v_2_mt4_trade_platform_users_sync_start.py +273 -0
  187. cplugin_webapi_sdk/_generated/api/mt5_v_2_common/__init__.py +1 -0
  188. cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_server_time.py +205 -0
  189. cplugin_webapi_sdk/_generated/api/mt5_v_2_common/get_api_v_2_mt5_trade_platform_time_get.py +205 -0
  190. cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/__init__.py +1 -0
  191. cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/get_api_v_2_mt5_trade_platform_group_get_group.py +218 -0
  192. cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/patch_api_v_2_mt5_trade_platform_group_record_group.py +255 -0
  193. cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/__init__.py +1 -0
  194. cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/get_api_v_2_mt5_trade_platform_manager_current.py +205 -0
  195. cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/__init__.py +1 -0
  196. cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/get_api_v_2_mt5_trade_platform_symbol_get_symbol.py +218 -0
  197. cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/patch_api_v_2_mt5_trade_platform_symbol_record_symbol.py +255 -0
  198. cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/__init__.py +1 -0
  199. cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_deal_by_group_mask.py +265 -0
  200. cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_order_by_group_mask.py +265 -0
  201. cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/get_api_v_2_mt5_trade_platform_position_by_group_mask.py +265 -0
  202. cplugin_webapi_sdk/_generated/api/mt5_v_2_users/__init__.py +1 -0
  203. cplugin_webapi_sdk/_generated/api/mt5_v_2_users/get_api_v_2_mt5_trade_platform_user_get_login.py +218 -0
  204. cplugin_webapi_sdk/_generated/api/mt5_v_2_users/patch_api_v_2_mt5_trade_platform_user_record_login.py +255 -0
  205. cplugin_webapi_sdk/_generated/client.py +271 -0
  206. cplugin_webapi_sdk/_generated/errors.py +14 -0
  207. cplugin_webapi_sdk/_generated/models/__init__.py +469 -0
  208. cplugin_webapi_sdk/_generated/models/activation_modes.py +10 -0
  209. cplugin_webapi_sdk/_generated/models/activation_type.py +15 -0
  210. cplugin_webapi_sdk/_generated/models/api_error.py +135 -0
  211. cplugin_webapi_sdk/_generated/models/api_meta.py +114 -0
  212. cplugin_webapi_sdk/_generated/models/arc_backup_execution_period.py +10 -0
  213. cplugin_webapi_sdk/_generated/models/arc_backup_store_period.py +11 -0
  214. cplugin_webapi_sdk/_generated/models/backup_execution_period.py +9 -0
  215. cplugin_webapi_sdk/_generated/models/backup_store_period.py +10 -0
  216. cplugin_webapi_sdk/_generated/models/boolean_api_response.py +143 -0
  217. cplugin_webapi_sdk/_generated/models/chart_period.py +15 -0
  218. cplugin_webapi_sdk/_generated/models/data_feed_mode.py +9 -0
  219. cplugin_webapi_sdk/_generated/models/date_time_api_response.py +154 -0
  220. cplugin_webapi_sdk/_generated/models/deal_action.py +27 -0
  221. cplugin_webapi_sdk/_generated/models/deal_reason.py +26 -0
  222. cplugin_webapi_sdk/_generated/models/en_auth_mode.py +10 -0
  223. cplugin_webapi_sdk/_generated/models/en_auth_otp_mode.py +9 -0
  224. cplugin_webapi_sdk/_generated/models/en_calc_mode.py +21 -0
  225. cplugin_webapi_sdk/_generated/models/en_chart_mode.py +9 -0
  226. cplugin_webapi_sdk/_generated/models/en_comm_action_mode.py +9 -0
  227. cplugin_webapi_sdk/_generated/models/en_comm_charge_mode.py +9 -0
  228. cplugin_webapi_sdk/_generated/models/en_comm_entry_mode.py +9 -0
  229. cplugin_webapi_sdk/_generated/models/en_comm_mode.py +9 -0
  230. cplugin_webapi_sdk/_generated/models/en_comm_profit_mode.py +9 -0
  231. cplugin_webapi_sdk/_generated/models/en_comm_range_mode.py +11 -0
  232. cplugin_webapi_sdk/_generated/models/en_commission_mode.py +14 -0
  233. cplugin_webapi_sdk/_generated/models/en_commission_volume_type.py +8 -0
  234. cplugin_webapi_sdk/_generated/models/en_execution_mode.py +10 -0
  235. cplugin_webapi_sdk/_generated/models/en_free_margin_mode.py +10 -0
  236. cplugin_webapi_sdk/_generated/models/en_gateway_account_flags.py +8 -0
  237. cplugin_webapi_sdk/_generated/models/en_gtc_mode.py +9 -0
  238. cplugin_webapi_sdk/_generated/models/en_history_limit.py +13 -0
  239. cplugin_webapi_sdk/_generated/models/en_industries.py +172 -0
  240. cplugin_webapi_sdk/_generated/models/en_instant_mode.py +7 -0
  241. cplugin_webapi_sdk/_generated/models/en_log_type.py +14 -0
  242. cplugin_webapi_sdk/_generated/models/en_mail_mode.py +8 -0
  243. cplugin_webapi_sdk/_generated/models/en_manager_limit.py +13 -0
  244. cplugin_webapi_sdk/_generated/models/en_manager_rights.py +82 -0
  245. cplugin_webapi_sdk/_generated/models/en_margin_mode.py +9 -0
  246. cplugin_webapi_sdk/_generated/models/en_news_mode.py +9 -0
  247. cplugin_webapi_sdk/_generated/models/en_option_mode.py +10 -0
  248. cplugin_webapi_sdk/_generated/models/en_reports_mode.py +10 -0
  249. cplugin_webapi_sdk/_generated/models/en_sectors.py +22 -0
  250. cplugin_webapi_sdk/_generated/models/en_splice_time_type.py +7 -0
  251. cplugin_webapi_sdk/_generated/models/en_splice_type.py +9 -0
  252. cplugin_webapi_sdk/_generated/models/en_stop_out_mode.py +8 -0
  253. cplugin_webapi_sdk/_generated/models/en_swap_days.py +14 -0
  254. cplugin_webapi_sdk/_generated/models/en_swap_mode.py +16 -0
  255. cplugin_webapi_sdk/_generated/models/en_trade_mode.py +11 -0
  256. cplugin_webapi_sdk/_generated/models/en_transfer_mode.py +10 -0
  257. cplugin_webapi_sdk/_generated/models/entry_flag.py +10 -0
  258. cplugin_webapi_sdk/_generated/models/export_execution_period.py +11 -0
  259. cplugin_webapi_sdk/_generated/models/gtc_mode.py +9 -0
  260. cplugin_webapi_sdk/_generated/models/int_32_api_response.py +143 -0
  261. cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response.py +170 -0
  262. cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response_data_type_0.py +107 -0
  263. cplugin_webapi_sdk/_generated/models/json_node.py +155 -0
  264. cplugin_webapi_sdk/_generated/models/json_node_api_response.py +170 -0
  265. cplugin_webapi_sdk/_generated/models/json_node_options.py +60 -0
  266. cplugin_webapi_sdk/_generated/models/margin_calculation_mode.py +11 -0
  267. cplugin_webapi_sdk/_generated/models/margin_controlling_type.py +8 -0
  268. cplugin_webapi_sdk/_generated/models/margin_level_type.py +9 -0
  269. cplugin_webapi_sdk/_generated/models/margin_mode.py +10 -0
  270. cplugin_webapi_sdk/_generated/models/mt4_access.py +106 -0
  271. cplugin_webapi_sdk/_generated/models/mt4_access_api_response.py +173 -0
  272. cplugin_webapi_sdk/_generated/models/mt4_access_list_api_response.py +180 -0
  273. cplugin_webapi_sdk/_generated/models/mt4_backup.py +442 -0
  274. cplugin_webapi_sdk/_generated/models/mt4_backup_api_response.py +174 -0
  275. cplugin_webapi_sdk/_generated/models/mt4_backup_info.py +107 -0
  276. cplugin_webapi_sdk/_generated/models/mt4_backup_info_list_api_response.py +180 -0
  277. cplugin_webapi_sdk/_generated/models/mt4_balance_diff.py +74 -0
  278. cplugin_webapi_sdk/_generated/models/mt4_balance_diff_api_response.py +174 -0
  279. cplugin_webapi_sdk/_generated/models/mt4_balance_diff_list_api_response.py +180 -0
  280. cplugin_webapi_sdk/_generated/models/mt4_chart_bar.py +121 -0
  281. cplugin_webapi_sdk/_generated/models/mt4_chart_bar_list_api_response.py +180 -0
  282. cplugin_webapi_sdk/_generated/models/mt4_chart_write_request.py +103 -0
  283. cplugin_webapi_sdk/_generated/models/mt4_common.py +124 -0
  284. cplugin_webapi_sdk/_generated/models/mt4_common_api_response.py +172 -0
  285. cplugin_webapi_sdk/_generated/models/mt4_common_update.py +201 -0
  286. cplugin_webapi_sdk/_generated/models/mt4_daily_report.py +212 -0
  287. cplugin_webapi_sdk/_generated/models/mt4_daily_report_list_api_response.py +180 -0
  288. cplugin_webapi_sdk/_generated/models/mt4_data_server.py +153 -0
  289. cplugin_webapi_sdk/_generated/models/mt4_data_server_api_response.py +174 -0
  290. cplugin_webapi_sdk/_generated/models/mt4_data_server_list_api_response.py +180 -0
  291. cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_request.py +77 -0
  292. cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response.py +74 -0
  293. cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response_api_response.py +171 -0
  294. cplugin_webapi_sdk/_generated/models/mt4_feeder.py +235 -0
  295. cplugin_webapi_sdk/_generated/models/mt4_feeder_api_response.py +172 -0
  296. cplugin_webapi_sdk/_generated/models/mt4_feeder_list_api_response.py +180 -0
  297. cplugin_webapi_sdk/_generated/models/mt4_gateway_account.py +190 -0
  298. cplugin_webapi_sdk/_generated/models/mt4_gateway_account_api_response.py +174 -0
  299. cplugin_webapi_sdk/_generated/models/mt4_gateway_account_list_api_response.py +180 -0
  300. cplugin_webapi_sdk/_generated/models/mt4_gateway_markup.py +157 -0
  301. cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_api_response.py +174 -0
  302. cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_list_api_response.py +180 -0
  303. cplugin_webapi_sdk/_generated/models/mt4_gateway_rule.py +234 -0
  304. cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_api_response.py +177 -0
  305. cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_list_api_response.py +180 -0
  306. cplugin_webapi_sdk/_generated/models/mt4_group.py +505 -0
  307. cplugin_webapi_sdk/_generated/models/mt4_group_api_response.py +193 -0
  308. cplugin_webapi_sdk/_generated/models/mt4_group_list_api_response.py +180 -0
  309. cplugin_webapi_sdk/_generated/models/mt4_group_margin.py +104 -0
  310. cplugin_webapi_sdk/_generated/models/mt4_group_margin_list_api_response.py +180 -0
  311. cplugin_webapi_sdk/_generated/models/mt4_group_sec.py +321 -0
  312. cplugin_webapi_sdk/_generated/models/mt4_group_sec_list_api_response.py +180 -0
  313. cplugin_webapi_sdk/_generated/models/mt4_group_update.py +467 -0
  314. cplugin_webapi_sdk/_generated/models/mt4_holiday.py +153 -0
  315. cplugin_webapi_sdk/_generated/models/mt4_holiday_api_response.py +174 -0
  316. cplugin_webapi_sdk/_generated/models/mt4_holiday_list_api_response.py +180 -0
  317. cplugin_webapi_sdk/_generated/models/mt4_live_update.py +165 -0
  318. cplugin_webapi_sdk/_generated/models/mt4_live_update_api_response.py +177 -0
  319. cplugin_webapi_sdk/_generated/models/mt4_live_update_list_api_response.py +180 -0
  320. cplugin_webapi_sdk/_generated/models/mt4_mail_box.py +148 -0
  321. cplugin_webapi_sdk/_generated/models/mt4_mail_box_list_api_response.py +180 -0
  322. cplugin_webapi_sdk/_generated/models/mt4_mail_send_request.py +160 -0
  323. cplugin_webapi_sdk/_generated/models/mt4_manager_rights.py +338 -0
  324. cplugin_webapi_sdk/_generated/models/mt4_manager_rights_api_response.py +175 -0
  325. cplugin_webapi_sdk/_generated/models/mt4_manager_rights_list_api_response.py +180 -0
  326. cplugin_webapi_sdk/_generated/models/mt4_margin_level.py +201 -0
  327. cplugin_webapi_sdk/_generated/models/mt4_margin_level_api_response.py +174 -0
  328. cplugin_webapi_sdk/_generated/models/mt4_margin_level_list_api_response.py +180 -0
  329. cplugin_webapi_sdk/_generated/models/mt4_news_send_request.py +127 -0
  330. cplugin_webapi_sdk/_generated/models/mt4_news_topic.py +177 -0
  331. cplugin_webapi_sdk/_generated/models/mt4_news_topic_api_response.py +178 -0
  332. cplugin_webapi_sdk/_generated/models/mt4_news_topic_list_api_response.py +180 -0
  333. cplugin_webapi_sdk/_generated/models/mt4_notifications_send_request.py +114 -0
  334. cplugin_webapi_sdk/_generated/models/mt4_online.py +88 -0
  335. cplugin_webapi_sdk/_generated/models/mt4_online_list_api_response.py +180 -0
  336. cplugin_webapi_sdk/_generated/models/mt4_performance.py +124 -0
  337. cplugin_webapi_sdk/_generated/models/mt4_performance_list_api_response.py +180 -0
  338. cplugin_webapi_sdk/_generated/models/mt4_plugin.py +153 -0
  339. cplugin_webapi_sdk/_generated/models/mt4_plugin_config.py +96 -0
  340. cplugin_webapi_sdk/_generated/models/mt4_plugin_list_api_response.py +180 -0
  341. cplugin_webapi_sdk/_generated/models/mt4_plugin_param.py +137 -0
  342. cplugin_webapi_sdk/_generated/models/mt4_plugin_param_api_response.py +171 -0
  343. cplugin_webapi_sdk/_generated/models/mt4_plugin_param_list_api_response.py +180 -0
  344. cplugin_webapi_sdk/_generated/models/mt4_server_log.py +151 -0
  345. cplugin_webapi_sdk/_generated/models/mt4_server_log_list_api_response.py +180 -0
  346. cplugin_webapi_sdk/_generated/models/mt4_server_time.py +95 -0
  347. cplugin_webapi_sdk/_generated/models/mt4_server_time_api_response.py +178 -0
  348. cplugin_webapi_sdk/_generated/models/mt4_symbol_change_request.py +148 -0
  349. cplugin_webapi_sdk/_generated/models/mt4_symbol_config.py +683 -0
  350. cplugin_webapi_sdk/_generated/models/mt4_symbol_config_api_response.py +177 -0
  351. cplugin_webapi_sdk/_generated/models/mt4_symbol_config_list_api_response.py +180 -0
  352. cplugin_webapi_sdk/_generated/models/mt4_symbol_config_update.py +608 -0
  353. cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions.py +171 -0
  354. cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions_list_api_response.py +180 -0
  355. cplugin_webapi_sdk/_generated/models/mt4_symbol_group.py +99 -0
  356. cplugin_webapi_sdk/_generated/models/mt4_symbol_group_api_response.py +174 -0
  357. cplugin_webapi_sdk/_generated/models/mt4_symbol_group_list_api_response.py +180 -0
  358. cplugin_webapi_sdk/_generated/models/mt4_symbol_info.py +210 -0
  359. cplugin_webapi_sdk/_generated/models/mt4_symbol_info_api_response.py +178 -0
  360. cplugin_webapi_sdk/_generated/models/mt4_symbol_info_list_api_response.py +180 -0
  361. cplugin_webapi_sdk/_generated/models/mt4_symbol_session.py +91 -0
  362. cplugin_webapi_sdk/_generated/models/mt4_sync.py +176 -0
  363. cplugin_webapi_sdk/_generated/models/mt4_sync_api_response.py +173 -0
  364. cplugin_webapi_sdk/_generated/models/mt4_sync_list_api_response.py +180 -0
  365. cplugin_webapi_sdk/_generated/models/mt4_tick_info.py +117 -0
  366. cplugin_webapi_sdk/_generated/models/mt4_tick_info_api_response.py +175 -0
  367. cplugin_webapi_sdk/_generated/models/mt4_tick_info_list_api_response.py +180 -0
  368. cplugin_webapi_sdk/_generated/models/mt4_tick_record.py +126 -0
  369. cplugin_webapi_sdk/_generated/models/mt4_tick_record_list_api_response.py +180 -0
  370. cplugin_webapi_sdk/_generated/models/mt4_trade.py +409 -0
  371. cplugin_webapi_sdk/_generated/models/mt4_trade_api_response.py +179 -0
  372. cplugin_webapi_sdk/_generated/models/mt4_trade_list_api_response.py +180 -0
  373. cplugin_webapi_sdk/_generated/models/mt4_trade_restore_input.py +274 -0
  374. cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result.py +72 -0
  375. cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result_list_api_response.py +180 -0
  376. cplugin_webapi_sdk/_generated/models/mt4_trade_transaction.py +262 -0
  377. cplugin_webapi_sdk/_generated/models/mt4_trade_transaction_api_response.py +181 -0
  378. cplugin_webapi_sdk/_generated/models/mt4_trade_update.py +165 -0
  379. cplugin_webapi_sdk/_generated/models/mt4_user.py +533 -0
  380. cplugin_webapi_sdk/_generated/models/mt4_user_api_response.py +184 -0
  381. cplugin_webapi_sdk/_generated/models/mt4_user_create.py +420 -0
  382. cplugin_webapi_sdk/_generated/models/mt4_user_list_api_response.py +180 -0
  383. cplugin_webapi_sdk/_generated/models/mt4_user_restore_input.py +193 -0
  384. cplugin_webapi_sdk/_generated/models/mt4_user_update.py +441 -0
  385. cplugin_webapi_sdk/_generated/models/mt4_users_group_op.py +140 -0
  386. cplugin_webapi_sdk/_generated/models/mt5_con_comm_tier.py +246 -0
  387. cplugin_webapi_sdk/_generated/models/mt5_con_commission.py +409 -0
  388. cplugin_webapi_sdk/_generated/models/mt5_con_group.py +1162 -0
  389. cplugin_webapi_sdk/_generated/models/mt5_con_group_api_response.py +170 -0
  390. cplugin_webapi_sdk/_generated/models/mt5_con_group_commissions_type_0.py +83 -0
  391. cplugin_webapi_sdk/_generated/models/mt5_con_manager.py +227 -0
  392. cplugin_webapi_sdk/_generated/models/mt5_con_manager_api_response.py +156 -0
  393. cplugin_webapi_sdk/_generated/models/mt5_deal.py +1045 -0
  394. cplugin_webapi_sdk/_generated/models/mt5_deal_list_api_response.py +180 -0
  395. cplugin_webapi_sdk/_generated/models/mt5_order.py +1008 -0
  396. cplugin_webapi_sdk/_generated/models/mt5_order_list_api_response.py +180 -0
  397. cplugin_webapi_sdk/_generated/models/mt5_position.py +829 -0
  398. cplugin_webapi_sdk/_generated/models/mt5_position_list_api_response.py +180 -0
  399. cplugin_webapi_sdk/_generated/models/mt5_symbol.py +2743 -0
  400. cplugin_webapi_sdk/_generated/models/mt5_symbol_api_response.py +170 -0
  401. cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_initial_type_0.py +124 -0
  402. cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_maintenance_type_0.py +124 -0
  403. cplugin_webapi_sdk/_generated/models/mt5_symbol_session.py +182 -0
  404. cplugin_webapi_sdk/_generated/models/mt5_time.py +101 -0
  405. cplugin_webapi_sdk/_generated/models/mt5_time_api_response.py +170 -0
  406. cplugin_webapi_sdk/_generated/models/mt5_user.py +752 -0
  407. cplugin_webapi_sdk/_generated/models/mt5_user_api_response.py +172 -0
  408. cplugin_webapi_sdk/_generated/models/news_mode.py +9 -0
  409. cplugin_webapi_sdk/_generated/models/order_filling.py +10 -0
  410. cplugin_webapi_sdk/_generated/models/order_reason.py +26 -0
  411. cplugin_webapi_sdk/_generated/models/order_state.py +16 -0
  412. cplugin_webapi_sdk/_generated/models/order_time.py +10 -0
  413. cplugin_webapi_sdk/_generated/models/order_type.py +15 -0
  414. cplugin_webapi_sdk/_generated/models/otp_mode.py +8 -0
  415. cplugin_webapi_sdk/_generated/models/paging_meta.py +88 -0
  416. cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_group_record_group_json_body.py +66 -0
  417. cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_symbol_config_symbol_json_body.py +66 -0
  418. cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_user_record_login_json_body.py +66 -0
  419. cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_group_record_group_json_body.py +66 -0
  420. cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_symbol_record_symbol_json_body.py +66 -0
  421. cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_user_record_login_json_body.py +66 -0
  422. cplugin_webapi_sdk/_generated/models/position_actions.py +8 -0
  423. cplugin_webapi_sdk/_generated/models/position_reasons.py +26 -0
  424. cplugin_webapi_sdk/_generated/models/profit_calculation_mode.py +9 -0
  425. cplugin_webapi_sdk/_generated/models/request_mode.py +10 -0
  426. cplugin_webapi_sdk/_generated/models/result_code.py +46 -0
  427. cplugin_webapi_sdk/_generated/models/server_role.py +9 -0
  428. cplugin_webapi_sdk/_generated/models/string_api_response.py +155 -0
  429. cplugin_webapi_sdk/_generated/models/swap_type.py +10 -0
  430. cplugin_webapi_sdk/_generated/models/symbol_exec_mode.py +9 -0
  431. cplugin_webapi_sdk/_generated/models/symbol_price_direction.py +9 -0
  432. cplugin_webapi_sdk/_generated/models/synchronization_mode.py +11 -0
  433. cplugin_webapi_sdk/_generated/models/trade_command.py +14 -0
  434. cplugin_webapi_sdk/_generated/models/trade_mode.py +9 -0
  435. cplugin_webapi_sdk/_generated/models/trade_record_reason.py +14 -0
  436. cplugin_webapi_sdk/_generated/models/trade_record_state.py +13 -0
  437. cplugin_webapi_sdk/_generated/models/watchdog_failover_mode.py +9 -0
  438. cplugin_webapi_sdk/_generated/models/watchdog_state.py +9 -0
  439. cplugin_webapi_sdk/_generated/models/web_api_error_code.py +17 -0
  440. cplugin_webapi_sdk/_generated/operation_timeouts.py +181 -0
  441. cplugin_webapi_sdk/_generated/types.py +53 -0
  442. cplugin_webapi_sdk/auth.py +278 -0
  443. cplugin_webapi_sdk/client.py +1215 -0
  444. cplugin_webapi_sdk/discovery.py +109 -0
  445. cplugin_webapi_sdk/envelope.py +77 -0
  446. cplugin_webapi_sdk/environments.py +45 -0
  447. cplugin_webapi_sdk/errors.py +79 -0
  448. cplugin_webapi_sdk/flags.py +36 -0
  449. cplugin_webapi_sdk/pagination.py +141 -0
  450. cplugin_webapi_sdk/realtime.py +408 -0
  451. cplugin_webapi_sdk/timeouts.py +197 -0
  452. cplugin_webapi_sdk/unwrap.py +153 -0
  453. mywebapi_sdk-0.3.0.dist-info/METADATA +312 -0
  454. mywebapi_sdk-0.3.0.dist-info/RECORD +456 -0
  455. mywebapi_sdk-0.3.0.dist-info/WHEEL +4 -0
  456. 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.