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,109 @@
1
+ """OIDC discovery — fetches ``.well-known/openid-configuration`` once and
2
+ caches the parsed document for the lifetime of the process.
3
+
4
+ Sync and async paths share the same cache: the first caller to populate it
5
+ wins, all subsequent callers (sync or async) get the cached document with no
6
+ further network IO. Locks guard only the *first* fetch — once cached, reads
7
+ are lock-free.
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import asyncio
12
+ import threading
13
+ from typing import Any
14
+
15
+ import httpx
16
+
17
+
18
+ class OidcDiscovery:
19
+ """Single-flight OIDC discovery document fetcher."""
20
+
21
+ def __init__(
22
+ self,
23
+ identity_url: str,
24
+ http_sync: httpx.Client | None = None,
25
+ http_async: httpx.AsyncClient | None = None,
26
+ ) -> None:
27
+ self._identity_url = identity_url.rstrip("/")
28
+ self._http_sync = http_sync
29
+ self._http_async = http_async
30
+ self._cached: dict[str, Any] | None = None
31
+ self._lock_sync = threading.Lock()
32
+ self._lock_async = asyncio.Lock()
33
+
34
+ @property
35
+ def discovery_url(self) -> str:
36
+ return f"{self._identity_url}/.well-known/openid-configuration"
37
+
38
+ def get_sync(self) -> dict[str, Any]:
39
+ # Fast path — lock-free read once populated.
40
+ if self._cached is not None:
41
+ return self._cached
42
+ with self._lock_sync:
43
+ if self._cached is not None:
44
+ return self._cached
45
+ client = self._http_sync or httpx.Client()
46
+ owns_client = self._http_sync is None
47
+ try:
48
+ r = client.get(self.discovery_url)
49
+ finally:
50
+ if owns_client:
51
+ client.close()
52
+ self._cached = self._validate_doc(self._parse_response(r))
53
+ return self._cached
54
+
55
+ async def get_async(self) -> dict[str, Any]:
56
+ if self._cached is not None:
57
+ return self._cached
58
+ async with self._lock_async:
59
+ if self._cached is not None:
60
+ return self._cached
61
+ client = self._http_async or httpx.AsyncClient()
62
+ owns_client = self._http_async is None
63
+ try:
64
+ r = await client.get(self.discovery_url)
65
+ finally:
66
+ if owns_client:
67
+ await client.aclose()
68
+ self._cached = self._validate_doc(self._parse_response(r))
69
+ return self._cached
70
+
71
+ @staticmethod
72
+ def _parse_response(r: httpx.Response) -> dict[str, Any]:
73
+ # Defer import to avoid circular dependency at module import time.
74
+ from .auth import OAuth2TokenError
75
+
76
+ if r.status_code < 200 or r.status_code >= 300:
77
+ raise OAuth2TokenError(
78
+ status_code=r.status_code,
79
+ error="discovery_failed",
80
+ error_description=f"OIDC discovery returned HTTP {r.status_code}",
81
+ )
82
+ try:
83
+ doc = r.json()
84
+ except Exception as e: # noqa: BLE001
85
+ raise OAuth2TokenError(
86
+ status_code=r.status_code,
87
+ error="discovery_failed",
88
+ error_description=f"OIDC discovery response was not JSON: {e}",
89
+ ) from e
90
+ if not isinstance(doc, dict):
91
+ raise OAuth2TokenError(
92
+ status_code=r.status_code,
93
+ error="discovery_failed",
94
+ error_description="OIDC discovery document was not a JSON object",
95
+ )
96
+ return doc
97
+
98
+ @staticmethod
99
+ def _validate_doc(doc: dict[str, Any]) -> dict[str, Any]:
100
+ from .auth import OAuth2TokenError
101
+
102
+ endpoint = doc.get("token_endpoint")
103
+ if not isinstance(endpoint, str) or not endpoint:
104
+ raise OAuth2TokenError(
105
+ status_code=0,
106
+ error="discovery_invalid",
107
+ error_description="OIDC discovery document missing token_endpoint",
108
+ )
109
+ return doc
@@ -0,0 +1,77 @@
1
+ """v2 response envelope: {data, error, meta}.
2
+
3
+ Mirrors the TS SDK's ApiEnvelope[T] / ApiErrorBody / ApiMeta / PagingMeta.
4
+ The server always returns HTTP 200 and signals failure in-envelope via a
5
+ non-null ``error``. Field aliases map the server's camelCase JSON to
6
+ snake_case Python attributes.
7
+
8
+ Schema reference: spec/v2.json components.schemas.{ApiError,ApiMeta,PagingMeta}.
9
+ """
10
+ from __future__ import annotations
11
+
12
+ from typing import Generic, TypeVar
13
+
14
+ from pydantic import BaseModel, ConfigDict, Field
15
+
16
+ T = TypeVar("T")
17
+
18
+ # * Stable transport-level error codes (WebApiErrorCode). Kept as a plain str
19
+ # so unknown future codes never raise on parse. The spec defines a fixed enum
20
+ # (Ok, NoConnect, Validation, …, Timeout, OutcomeUnknown, Busy, Internal) but the
21
+ # wire type is a string — new codes would otherwise be rejected by a Literal union.
22
+ # Named constants: timeouts.ErrorCode.
23
+ WebApiErrorCode = str
24
+
25
+
26
+ class PagingMeta(BaseModel):
27
+ """Pagination cursor returned on list endpoints."""
28
+
29
+ model_config = ConfigDict(populate_by_name=True)
30
+
31
+ # * nextCursor is the opaque page token; pass it back as ?cursor=.
32
+ next_cursor: str | None = Field(default=None, alias="nextCursor")
33
+ # * hasMore is the explicit boolean sentinel so callers avoid null-string checks.
34
+ has_more: bool = Field(default=False, alias="hasMore")
35
+
36
+
37
+ class ApiMeta(BaseModel):
38
+ """Response metadata present on every v2 response."""
39
+
40
+ model_config = ConfigDict(populate_by_name=True)
41
+
42
+ # * W3C trace id — correlate this response in Seq/SigNoz logs.
43
+ activity_id: str | None = Field(default=None, alias="activityId")
44
+ # * Pagination info; null for non-list endpoints.
45
+ paging: PagingMeta | None = None
46
+
47
+
48
+ class ApiErrorBody(BaseModel):
49
+ """Parsed representation of the ``error`` field in a v2 envelope.
50
+
51
+ ``code`` is the stable transport-level error code (WebApiErrorCode).
52
+ ``manager_code`` is the raw MT4/MT5 ResultCode: a string for named enum
53
+ members, an integer for unrecognised numeric codes.
54
+ ``message`` is the human-readable description.
55
+ """
56
+
57
+ model_config = ConfigDict(populate_by_name=True)
58
+
59
+ code: WebApiErrorCode
60
+ # ! Raw MT4/MT5 ResultCode: a string for a named member, a number otherwise.
61
+ manager_code: str | int | None = Field(default=None, alias="managerCode")
62
+ message: str | None = None
63
+
64
+
65
+ class ApiEnvelope(BaseModel, Generic[T]):
66
+ """Top-level v2 envelope: {data, error, meta}.
67
+
68
+ ``data`` carries the typed payload on success (non-null).
69
+ ``error`` is non-null on failure; the transport raises ApiError in that case.
70
+ ``meta`` carries correlation and pagination metadata.
71
+ """
72
+
73
+ model_config = ConfigDict(populate_by_name=True)
74
+
75
+ data: T | None = None
76
+ error: ApiErrorBody | None = None
77
+ meta: ApiMeta | None = None
@@ -0,0 +1,45 @@
1
+ """Environment presets for the v2 SDK. Presets carry only customer-facing
2
+ base URLs — no internal hosts, tokens, or credentials.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ from dataclasses import dataclass
7
+ from typing import Literal
8
+
9
+ EnvironmentName = Literal["prod", "staging", "custom"]
10
+
11
+
12
+ @dataclass(frozen=True)
13
+ class ResolvedEnvironment:
14
+ api_base_url: str
15
+ authority: str
16
+
17
+
18
+ _PRESETS: dict[str, ResolvedEnvironment] = {
19
+ "prod": ResolvedEnvironment("https://cloud.mywebapi.com", "https://auth.cplugin.net"),
20
+ "staging": ResolvedEnvironment("https://pre.mywebapi.com", "https://pre.auth.cplugin.net"),
21
+ }
22
+
23
+
24
+ def _strip(u: str) -> str:
25
+ # * Strip trailing slashes from URLs to normalize custom environment inputs.
26
+ return u.rstrip("/")
27
+
28
+
29
+ def resolve_environment(
30
+ env: EnvironmentName,
31
+ *,
32
+ api_base_url: str | None = None,
33
+ authority: str | None = None,
34
+ ) -> ResolvedEnvironment:
35
+ # * Resolve environment configuration by name (preset) or custom URLs.
36
+ # * For custom env, both api_base_url and authority are required and trailing slashes
37
+ # * are stripped to normalize the URLs.
38
+ if env == "custom":
39
+ if not api_base_url or not authority:
40
+ raise ValueError("custom environment requires both api_base_url and authority")
41
+ return ResolvedEnvironment(_strip(api_base_url), _strip(authority))
42
+ preset = _PRESETS.get(env)
43
+ if preset is None:
44
+ raise ValueError(f"unknown environment: {env!r}")
45
+ return preset
@@ -0,0 +1,79 @@
1
+ """ApiError — raised when a v2 envelope carries a non-null ``error``.
2
+
3
+ Public surface mirrors the TS SDK: {code, description, activity_id}.
4
+ ``manager_code`` and ``status`` are retained as extras for diagnostics;
5
+ ``outcome``, ``applied_timeout`` and ``headers`` come from the response headers
6
+ and say what a timeout means for the operation (see ``timeouts``).
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from collections.abc import Mapping
11
+
12
+ from .envelope import ApiErrorBody, ApiMeta, WebApiErrorCode
13
+ from .timeouts import (
14
+ APPLIED_TIMEOUT_HEADER,
15
+ OUTCOME_HEADER,
16
+ is_outcome_unknown,
17
+ is_safe_to_retry,
18
+ )
19
+
20
+
21
+ def _header(headers: Mapping[str, str], name: str) -> str | None:
22
+ # * httpx.Headers is case-insensitive; a plain dict (tests, custom shims) may not be.
23
+ value = headers.get(name)
24
+ if value is None:
25
+ lowered = name.lower()
26
+ value = next((v for k, v in headers.items() if k.lower() == lowered), None)
27
+ return value
28
+
29
+
30
+ class ApiError(Exception):
31
+ """Raised by the transport when an envelope's ``error`` field is non-null.
32
+
33
+ Attributes:
34
+ code: Stable error code (``ErrorCode``), e.g. ``"OutcomeUnknown"``.
35
+ description: Human-readable message from the server.
36
+ activity_id: Trace id to quote when reporting the problem.
37
+ manager_code: Raw trade-platform result code, when there is one.
38
+ status: HTTP status (v2 answers 200 even on errors).
39
+ outcome: ``X-Request-Outcome`` header (``RequestOutcome``): ``"timeout"``,
40
+ ``"unknown"``, ``"not-started"``, ``"in-progress"``, or ``None``.
41
+ applied_timeout: ``X-Request-Timeout-Applied`` header — the deadline the server
42
+ used, in seconds — or ``None``.
43
+ headers: All response headers.
44
+ """
45
+
46
+ def __init__(
47
+ self,
48
+ body: ApiErrorBody,
49
+ meta: ApiMeta | None,
50
+ status: int,
51
+ headers: Mapping[str, str] | None = None,
52
+ ) -> None:
53
+ self.code: WebApiErrorCode = body.code
54
+ self.description: str | None = body.message
55
+ self.activity_id: str | None = meta.activity_id if meta is not None else None
56
+ self.manager_code: str | int | None = body.manager_code
57
+ self.status: int = status
58
+ self.headers: Mapping[str, str] = headers if headers is not None else {}
59
+
60
+ outcome = _header(self.headers, OUTCOME_HEADER)
61
+ self.outcome: str | None = outcome.strip().lower() if outcome and outcome.strip() else None
62
+
63
+ applied = _header(self.headers, APPLIED_TIMEOUT_HEADER)
64
+ try:
65
+ self.applied_timeout: float | None = float(applied) if applied else None
66
+ except ValueError:
67
+ self.applied_timeout = None
68
+
69
+ super().__init__(self.description or f"v2 error: {body.code}")
70
+
71
+ @property
72
+ def outcome_unknown(self) -> bool:
73
+ """The operation may still be applied — check before repeating (see ``is_outcome_unknown``)."""
74
+ return is_outcome_unknown(self)
75
+
76
+ @property
77
+ def safe_to_retry(self) -> bool:
78
+ """Repeating the request cannot apply the operation twice (see ``is_safe_to_retry``)."""
79
+ return is_safe_to_retry(self)
@@ -0,0 +1,36 @@
1
+ """Flag fields — user rights, group permissions, symbol flags, …
2
+
3
+ They travel as the names of the set bits joined by ", ": ``"Enabled, Password"``. No bit set is ``"None"``; a
4
+ set bit the API has no name for is ``"Bit<n>"`` — keep it when writing the value back, the trading platform may
5
+ rely on it. The names and bit values of every flag type are in the OpenAPI spec (``x-enum-varnames`` /
6
+ ``x-enum-values``).
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from collections.abc import Iterable
11
+
12
+
13
+ def parse_flags(value: str | None) -> list[str]:
14
+ """Names of the set bits; ``"None"``, an empty string and ``None`` give an empty list."""
15
+ if not value:
16
+ return []
17
+ return [n for n in (part.strip() for part in value.split(",")) if n and n.lower() != "none"]
18
+
19
+
20
+ def format_flags(names: Iterable[str]) -> str:
21
+ """The wire form of a set of bit names; no names give ``"None"``. Duplicates are dropped, order is kept."""
22
+ unique = list(dict.fromkeys(n.strip() for n in names if n.strip() and n.strip().lower() != "none"))
23
+ return ", ".join(unique) if unique else "None"
24
+
25
+
26
+ def has_flag(value: str | None, name: str) -> bool:
27
+ """Whether the bit ``name`` is set (names compare case-insensitively, as the API reads them)."""
28
+ wanted = name.lower()
29
+ return any(n.lower() == wanted for n in parse_flags(value))
30
+
31
+
32
+ def with_flag(value: str | None, name: str, on: bool = True) -> str:
33
+ """``value`` with the bit ``name`` set (``on=True``) or cleared; every other bit, unnamed ones included, is kept."""
34
+ wanted = name.lower()
35
+ rest = [n for n in parse_flags(value) if n.lower() != wanted]
36
+ return format_flags([*rest, name] if on else rest)
@@ -0,0 +1,141 @@
1
+ """Cursor pagination over the v2 envelope's ``meta.paging``.
2
+
3
+ Mirrors the TS SDK's ``paginate()`` / ``collectAll()`` helpers with sync AND
4
+ async symmetry.
5
+
6
+ The ``fetch_page(cursor)`` callback contract
7
+ -------------------------------------------
8
+ - Accepts a cursor token (``str | None``; ``None`` means "first page").
9
+ - Returns ``(items, meta)`` — the same tuple that namespace ``*_request``
10
+ methods produce via ``unwrap_with_meta``. ``meta`` may be ``None`` on
11
+ non-paged endpoints; the helpers stop gracefully in that case.
12
+
13
+ Continuation rule
14
+ -----------------
15
+ - Continue while ``meta.paging.has_more is True`` AND
16
+ ``meta.paging.next_cursor`` is non-empty.
17
+ - Either sentinel alone stops iteration:
18
+ - ``has_more=False`` → stop (even if ``next_cursor`` happens to be set).
19
+ - ``next_cursor=None/""`` → stop (defensive guard against server omission).
20
+ - ``meta=None`` or ``meta.paging=None`` → treat as last page and stop.
21
+ """
22
+ from __future__ import annotations
23
+
24
+ from typing import Any, AsyncGenerator, Awaitable, Callable, Iterator
25
+
26
+ from .envelope import ApiMeta
27
+
28
+ # * Type aliases describing the callback contract.
29
+ _PageResult = tuple[list[Any], ApiMeta | None]
30
+ PageFetcherSync = Callable[[str | None], _PageResult]
31
+ PageFetcherAsync = Callable[[str | None], Awaitable[_PageResult]]
32
+
33
+
34
+ # ---------------------------------------------------------------------------
35
+ # Internal helper
36
+ # ---------------------------------------------------------------------------
37
+
38
+ def _next_cursor(meta: ApiMeta | None) -> str | None:
39
+ """Extract the next cursor from a page's metadata, or ``None`` to stop.
40
+
41
+ Returns ``None`` when:
42
+ - ``meta`` is ``None`` (non-paged endpoint or server omission).
43
+ - ``meta.paging`` is ``None``.
44
+ - ``meta.paging.has_more`` is ``False``.
45
+ - ``meta.paging.next_cursor`` is ``None`` or empty string.
46
+ """
47
+ if meta is None or meta.paging is None:
48
+ return None
49
+ if not meta.paging.has_more:
50
+ return None
51
+ # * Treat empty string the same as None — defensive against server quirks.
52
+ return meta.paging.next_cursor or None
53
+
54
+
55
+ # ---------------------------------------------------------------------------
56
+ # Public sync API
57
+ # ---------------------------------------------------------------------------
58
+
59
+ def paginate_sync(fetch_page: PageFetcherSync) -> Iterator[list[Any]]:
60
+ """Yield successive pages from a cursor-paginated endpoint (sync).
61
+
62
+ ``fetch_page`` is called with the current cursor (``None`` for the first
63
+ page) and must return ``(items, meta)``. Iteration stops when
64
+ ``meta.paging.has_more`` is ``False`` or ``next_cursor`` is absent.
65
+
66
+ Example::
67
+
68
+ for page in paginate_sync(lambda cur: client.mt4.users_request(tp, cursor=cur)):
69
+ for user in page:
70
+ process(user)
71
+ """
72
+ cursor: str | None = None
73
+ while True:
74
+ items, meta = fetch_page(cursor)
75
+ yield items
76
+ cursor = _next_cursor(meta)
77
+ if cursor is None:
78
+ return
79
+
80
+
81
+ def collect_all_sync(fetch_page: PageFetcherSync) -> list[Any]:
82
+ """Drain all pages into a single flat list (sync).
83
+
84
+ Convenience wrapper around :func:`paginate_sync`. For large collections
85
+ prefer :func:`paginate_sync` to avoid materialising all records in memory.
86
+
87
+ Example::
88
+
89
+ all_users = collect_all_sync(
90
+ lambda cur: client.mt4.users_request(tp, cursor=cur)
91
+ )
92
+ """
93
+ out: list[Any] = []
94
+ for page in paginate_sync(fetch_page):
95
+ out.extend(page)
96
+ return out
97
+
98
+
99
+ # ---------------------------------------------------------------------------
100
+ # Public async API
101
+ # ---------------------------------------------------------------------------
102
+
103
+ async def paginate_async(fetch_page: PageFetcherAsync) -> AsyncGenerator[list[Any], None]:
104
+ """Async generator yielding successive pages from a cursor-paginated endpoint.
105
+
106
+ ``fetch_page`` must be an async callable accepting a cursor and returning
107
+ ``(items, meta)``. Mirrors :func:`paginate_sync` exactly.
108
+
109
+ Example::
110
+
111
+ async for page in paginate_async(
112
+ lambda cur: client.mt4.users_request(tp, cursor=cur)
113
+ ):
114
+ for user in page:
115
+ await process(user)
116
+ """
117
+ cursor: str | None = None
118
+ while True:
119
+ items, meta = await fetch_page(cursor)
120
+ yield items
121
+ cursor = _next_cursor(meta)
122
+ if cursor is None:
123
+ return
124
+
125
+
126
+ async def collect_all_async(fetch_page: PageFetcherAsync) -> list[Any]:
127
+ """Drain all pages into a single flat list (async).
128
+
129
+ Convenience wrapper around :func:`paginate_async`. For large collections
130
+ prefer :func:`paginate_async` to avoid materialising all records in memory.
131
+
132
+ Example::
133
+
134
+ all_users = await collect_all_async(
135
+ lambda cur: client.mt4.users_request(tp, cursor=cur)
136
+ )
137
+ """
138
+ out: list[Any] = []
139
+ async for page in paginate_async(fetch_page):
140
+ out.extend(page)
141
+ return out