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.
Files changed (482) hide show
  1. mywebapi_sdk-0.3.0/.env.example +22 -0
  2. mywebapi_sdk-0.3.0/.github/workflows/ci.yml +57 -0
  3. mywebapi_sdk-0.3.0/.github/workflows/publish.yml +94 -0
  4. mywebapi_sdk-0.3.0/.gitignore +9 -0
  5. mywebapi_sdk-0.3.0/CHANGELOG.md +34 -0
  6. mywebapi_sdk-0.3.0/LICENSE +21 -0
  7. mywebapi_sdk-0.3.0/PKG-INFO +312 -0
  8. mywebapi_sdk-0.3.0/PUBLISHING.md +62 -0
  9. mywebapi_sdk-0.3.0/README.md +273 -0
  10. mywebapi_sdk-0.3.0/e2e/test_e2e.py +100 -0
  11. mywebapi_sdk-0.3.0/examples/01_hello.py +63 -0
  12. mywebapi_sdk-0.3.0/openapi_python_client_config.yaml +8 -0
  13. mywebapi_sdk-0.3.0/pyproject.toml +64 -0
  14. mywebapi_sdk-0.3.0/scripts/fetch_spec.py +48 -0
  15. mywebapi_sdk-0.3.0/scripts/generate_client.py +147 -0
  16. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/__init__.py +79 -0
  17. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/__init__.py +8 -0
  18. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/__init__.py +1 -0
  19. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_authentication/__init__.py +1 -0
  20. 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
  21. 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
  22. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup/__init__.py +1 -0
  23. 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
  24. 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
  25. 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
  26. 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
  27. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_backup_destructive/__init__.py +1 -0
  28. 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
  29. 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
  30. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_common/__init__.py +1 -0
  31. 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
  32. 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
  33. 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
  34. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_config/__init__.py +1 -0
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_groups/__init__.py +1 -0
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_history/__init__.py +1 -0
  96. 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
  97. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_mail/__init__.py +1 -0
  98. 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
  99. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_margins/__init__.py +1 -0
  100. 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
  101. 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
  102. 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
  103. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_news/__init__.py +1 -0
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_online/__init__.py +1 -0
  110. 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
  111. 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
  112. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_plugins/__init__.py +1 -0
  113. 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
  114. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_prices/__init__.py +1 -0
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_reports/__init__.py +1 -0
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin/__init__.py +1 -0
  131. 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
  132. 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
  133. 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
  134. 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
  135. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_server_admin_destructive/__init__.py +1 -0
  136. 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
  137. 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
  138. 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
  139. 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
  140. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_batch_reads/__init__.py +1 -0
  141. 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
  142. 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
  143. 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
  144. 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
  145. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_external_command/__init__.py +1 -0
  146. 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
  147. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_messaging/__init__.py +1 -0
  148. 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
  149. 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
  150. 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
  151. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_sidecar_plugins/__init__.py +1 -0
  152. 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
  153. 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
  154. 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
  155. 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
  156. 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
  157. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_symbols/__init__.py +1 -0
  158. 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
  159. 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
  160. 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
  161. 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
  162. 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
  163. 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
  164. 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
  165. 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
  166. 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
  167. 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
  168. 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
  169. 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
  170. 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
  171. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_trades/__init__.py +1 -0
  172. 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
  173. 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
  174. 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
  175. 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
  176. 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
  177. 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
  178. 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
  179. 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
  180. 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
  181. 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
  182. 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
  183. 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
  184. 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
  185. 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
  186. 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
  187. 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
  188. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt4_v_2_users/__init__.py +1 -0
  189. 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
  190. 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
  191. 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
  192. 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
  193. 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
  194. 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
  195. 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
  196. 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
  197. 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
  198. 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
  199. 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
  200. 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
  201. 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
  202. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_common/__init__.py +1 -0
  203. 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
  204. 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
  205. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_groups/__init__.py +1 -0
  206. 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
  207. 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
  208. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_managers/__init__.py +1 -0
  209. 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
  210. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_symbols/__init__.py +1 -0
  211. 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
  212. 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
  213. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_trades/__init__.py +1 -0
  214. 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
  215. 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
  216. 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
  217. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/api/mt5_v_2_users/__init__.py +1 -0
  218. 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
  219. 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
  220. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/client.py +271 -0
  221. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/errors.py +14 -0
  222. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/__init__.py +469 -0
  223. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/activation_modes.py +10 -0
  224. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/activation_type.py +15 -0
  225. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/api_error.py +135 -0
  226. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/api_meta.py +114 -0
  227. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/arc_backup_execution_period.py +10 -0
  228. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/arc_backup_store_period.py +11 -0
  229. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/backup_execution_period.py +9 -0
  230. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/backup_store_period.py +10 -0
  231. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/boolean_api_response.py +143 -0
  232. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/chart_period.py +15 -0
  233. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/data_feed_mode.py +9 -0
  234. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/date_time_api_response.py +154 -0
  235. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/deal_action.py +27 -0
  236. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/deal_reason.py +26 -0
  237. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_auth_mode.py +10 -0
  238. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_auth_otp_mode.py +9 -0
  239. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_calc_mode.py +21 -0
  240. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_chart_mode.py +9 -0
  241. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_action_mode.py +9 -0
  242. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_charge_mode.py +9 -0
  243. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_entry_mode.py +9 -0
  244. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_mode.py +9 -0
  245. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_profit_mode.py +9 -0
  246. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_comm_range_mode.py +11 -0
  247. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_commission_mode.py +14 -0
  248. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_commission_volume_type.py +8 -0
  249. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_execution_mode.py +10 -0
  250. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_free_margin_mode.py +10 -0
  251. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_gateway_account_flags.py +8 -0
  252. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_gtc_mode.py +9 -0
  253. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_history_limit.py +13 -0
  254. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_industries.py +172 -0
  255. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_instant_mode.py +7 -0
  256. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_log_type.py +14 -0
  257. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_mail_mode.py +8 -0
  258. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_manager_limit.py +13 -0
  259. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_manager_rights.py +82 -0
  260. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_margin_mode.py +9 -0
  261. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_news_mode.py +9 -0
  262. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_option_mode.py +10 -0
  263. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_reports_mode.py +10 -0
  264. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_sectors.py +22 -0
  265. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_splice_time_type.py +7 -0
  266. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_splice_type.py +9 -0
  267. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_stop_out_mode.py +8 -0
  268. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_swap_days.py +14 -0
  269. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_swap_mode.py +16 -0
  270. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_trade_mode.py +11 -0
  271. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/en_transfer_mode.py +10 -0
  272. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/entry_flag.py +10 -0
  273. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/export_execution_period.py +11 -0
  274. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/gtc_mode.py +9 -0
  275. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/int_32_api_response.py +143 -0
  276. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/int_32mt4_daily_report_list_dictionary_api_response.py +170 -0
  277. 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
  278. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node.py +155 -0
  279. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node_api_response.py +170 -0
  280. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/json_node_options.py +60 -0
  281. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_calculation_mode.py +11 -0
  282. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_controlling_type.py +8 -0
  283. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_level_type.py +9 -0
  284. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/margin_mode.py +10 -0
  285. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access.py +106 -0
  286. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access_api_response.py +173 -0
  287. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_access_list_api_response.py +180 -0
  288. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup.py +442 -0
  289. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_api_response.py +174 -0
  290. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_info.py +107 -0
  291. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_backup_info_list_api_response.py +180 -0
  292. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff.py +74 -0
  293. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff_api_response.py +174 -0
  294. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_balance_diff_list_api_response.py +180 -0
  295. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_bar.py +121 -0
  296. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_bar_list_api_response.py +180 -0
  297. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_chart_write_request.py +103 -0
  298. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common.py +124 -0
  299. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common_api_response.py +172 -0
  300. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_common_update.py +201 -0
  301. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_daily_report.py +212 -0
  302. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_daily_report_list_api_response.py +180 -0
  303. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server.py +153 -0
  304. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server_api_response.py +174 -0
  305. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_data_server_list_api_response.py +180 -0
  306. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_request.py +77 -0
  307. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response.py +74 -0
  308. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_external_command_binary_response_api_response.py +171 -0
  309. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder.py +235 -0
  310. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder_api_response.py +172 -0
  311. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_feeder_list_api_response.py +180 -0
  312. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account.py +190 -0
  313. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account_api_response.py +174 -0
  314. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_account_list_api_response.py +180 -0
  315. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup.py +157 -0
  316. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_api_response.py +174 -0
  317. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_markup_list_api_response.py +180 -0
  318. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule.py +234 -0
  319. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_api_response.py +177 -0
  320. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_gateway_rule_list_api_response.py +180 -0
  321. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group.py +505 -0
  322. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_api_response.py +193 -0
  323. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_list_api_response.py +180 -0
  324. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_margin.py +104 -0
  325. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_margin_list_api_response.py +180 -0
  326. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_sec.py +321 -0
  327. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_sec_list_api_response.py +180 -0
  328. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_group_update.py +467 -0
  329. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday.py +153 -0
  330. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday_api_response.py +174 -0
  331. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_holiday_list_api_response.py +180 -0
  332. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update.py +165 -0
  333. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update_api_response.py +177 -0
  334. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_live_update_list_api_response.py +180 -0
  335. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_box.py +148 -0
  336. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_box_list_api_response.py +180 -0
  337. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_mail_send_request.py +160 -0
  338. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights.py +338 -0
  339. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights_api_response.py +175 -0
  340. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_manager_rights_list_api_response.py +180 -0
  341. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level.py +201 -0
  342. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level_api_response.py +174 -0
  343. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_margin_level_list_api_response.py +180 -0
  344. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_send_request.py +127 -0
  345. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic.py +177 -0
  346. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic_api_response.py +178 -0
  347. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_news_topic_list_api_response.py +180 -0
  348. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_notifications_send_request.py +114 -0
  349. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_online.py +88 -0
  350. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_online_list_api_response.py +180 -0
  351. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_performance.py +124 -0
  352. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_performance_list_api_response.py +180 -0
  353. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin.py +153 -0
  354. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_config.py +96 -0
  355. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_list_api_response.py +180 -0
  356. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param.py +137 -0
  357. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param_api_response.py +171 -0
  358. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_plugin_param_list_api_response.py +180 -0
  359. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_log.py +151 -0
  360. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_log_list_api_response.py +180 -0
  361. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_time.py +95 -0
  362. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_server_time_api_response.py +178 -0
  363. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_change_request.py +148 -0
  364. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config.py +683 -0
  365. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_api_response.py +177 -0
  366. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_list_api_response.py +180 -0
  367. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_config_update.py +608 -0
  368. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions.py +171 -0
  369. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_day_sessions_list_api_response.py +180 -0
  370. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group.py +99 -0
  371. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group_api_response.py +174 -0
  372. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_group_list_api_response.py +180 -0
  373. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info.py +210 -0
  374. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info_api_response.py +178 -0
  375. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_info_list_api_response.py +180 -0
  376. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_symbol_session.py +91 -0
  377. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync.py +176 -0
  378. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync_api_response.py +173 -0
  379. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_sync_list_api_response.py +180 -0
  380. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info.py +117 -0
  381. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info_api_response.py +175 -0
  382. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_info_list_api_response.py +180 -0
  383. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_record.py +126 -0
  384. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_tick_record_list_api_response.py +180 -0
  385. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade.py +409 -0
  386. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_api_response.py +179 -0
  387. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_list_api_response.py +180 -0
  388. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_input.py +274 -0
  389. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result.py +72 -0
  390. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_restore_result_list_api_response.py +180 -0
  391. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_transaction.py +262 -0
  392. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_transaction_api_response.py +181 -0
  393. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_trade_update.py +165 -0
  394. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user.py +533 -0
  395. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_api_response.py +184 -0
  396. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_create.py +420 -0
  397. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_list_api_response.py +180 -0
  398. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_restore_input.py +193 -0
  399. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_user_update.py +441 -0
  400. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt4_users_group_op.py +140 -0
  401. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_comm_tier.py +246 -0
  402. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_commission.py +409 -0
  403. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group.py +1162 -0
  404. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group_api_response.py +170 -0
  405. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_group_commissions_type_0.py +83 -0
  406. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_manager.py +227 -0
  407. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_con_manager_api_response.py +156 -0
  408. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_deal.py +1045 -0
  409. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_deal_list_api_response.py +180 -0
  410. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_order.py +1008 -0
  411. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_order_list_api_response.py +180 -0
  412. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_position.py +829 -0
  413. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_position_list_api_response.py +180 -0
  414. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol.py +2743 -0
  415. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_api_response.py +170 -0
  416. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_initial_type_0.py +124 -0
  417. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_margin_rate_maintenance_type_0.py +124 -0
  418. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_symbol_session.py +182 -0
  419. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_time.py +101 -0
  420. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_time_api_response.py +170 -0
  421. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_user.py +752 -0
  422. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/mt5_user_api_response.py +172 -0
  423. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/news_mode.py +9 -0
  424. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_filling.py +10 -0
  425. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_reason.py +26 -0
  426. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_state.py +16 -0
  427. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_time.py +10 -0
  428. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/order_type.py +15 -0
  429. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/otp_mode.py +8 -0
  430. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/paging_meta.py +88 -0
  431. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_group_record_group_json_body.py +66 -0
  432. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_symbol_config_symbol_json_body.py +66 -0
  433. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt4_trade_platform_user_record_login_json_body.py +66 -0
  434. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_group_record_group_json_body.py +66 -0
  435. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_symbol_record_symbol_json_body.py +66 -0
  436. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/patch_api_v2mt5_trade_platform_user_record_login_json_body.py +66 -0
  437. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/position_actions.py +8 -0
  438. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/position_reasons.py +26 -0
  439. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/profit_calculation_mode.py +9 -0
  440. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/request_mode.py +10 -0
  441. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/result_code.py +46 -0
  442. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/server_role.py +9 -0
  443. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/string_api_response.py +155 -0
  444. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/swap_type.py +10 -0
  445. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/symbol_exec_mode.py +9 -0
  446. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/symbol_price_direction.py +9 -0
  447. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/synchronization_mode.py +11 -0
  448. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_command.py +14 -0
  449. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_mode.py +9 -0
  450. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_record_reason.py +14 -0
  451. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/trade_record_state.py +13 -0
  452. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/watchdog_failover_mode.py +9 -0
  453. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/watchdog_state.py +9 -0
  454. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/models/web_api_error_code.py +17 -0
  455. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/operation_timeouts.py +181 -0
  456. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/_generated/types.py +53 -0
  457. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/auth.py +278 -0
  458. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/client.py +1215 -0
  459. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/discovery.py +109 -0
  460. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/envelope.py +77 -0
  461. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/environments.py +45 -0
  462. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/errors.py +79 -0
  463. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/flags.py +36 -0
  464. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/pagination.py +141 -0
  465. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/realtime.py +408 -0
  466. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/spec/v2.json +21293 -0
  467. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/timeouts.py +197 -0
  468. mywebapi_sdk-0.3.0/src/cplugin_webapi_sdk/unwrap.py +153 -0
  469. mywebapi_sdk-0.3.0/tests/__init__.py +0 -0
  470. mywebapi_sdk-0.3.0/tests/conftest.py +121 -0
  471. mywebapi_sdk-0.3.0/tests/fixtures/openid-configuration.json +84 -0
  472. mywebapi_sdk-0.3.0/tests/test_auth.py +349 -0
  473. mywebapi_sdk-0.3.0/tests/test_client.py +532 -0
  474. mywebapi_sdk-0.3.0/tests/test_environments.py +23 -0
  475. mywebapi_sdk-0.3.0/tests/test_errors_envelope.py +42 -0
  476. mywebapi_sdk-0.3.0/tests/test_flags.py +41 -0
  477. mywebapi_sdk-0.3.0/tests/test_generated_contract.py +47 -0
  478. mywebapi_sdk-0.3.0/tests/test_generated_smoke.py +78 -0
  479. mywebapi_sdk-0.3.0/tests/test_pagination.py +188 -0
  480. mywebapi_sdk-0.3.0/tests/test_realtime.py +232 -0
  481. mywebapi_sdk-0.3.0/tests/test_timeouts.py +491 -0
  482. 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,9 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .pytest_cache/
9
+ .env
@@ -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.