webull-openapi-python-sdk 2.0.19__py3-none-any.whl → 3.0.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 (157) hide show
  1. samples/screener/screener_client.py +55 -2
  2. webull/__init__.py +1 -1
  3. webull/core/__init__.py +1 -1
  4. webull/core/http/initializer/config/bean/query_config_request.py +1 -1
  5. webull/core/http/initializer/token/bean/check_token_request.py +1 -1
  6. webull/core/http/initializer/token/bean/create_token_request.py +1 -1
  7. webull/core/http/initializer/token/bean/refresh_token_request.py +1 -1
  8. webull/data/__init__.py +1 -1
  9. webull/data/quotes/fundamentals.py +19 -0
  10. webull/data/quotes/instrument.py +148 -1
  11. webull/data/quotes/screener.py +179 -0
  12. webull/data/request/get_analyst_rating_request.py +2 -1
  13. webull/data/request/get_analyst_target_price_request.py +2 -1
  14. webull/data/request/get_batch_historical_bars_request.py +1 -1
  15. webull/data/request/get_capital_flow_request.py +1 -1
  16. webull/data/request/get_company_profile_request.py +2 -1
  17. webull/data/request/get_corp_action_request.py +1 -1
  18. webull/data/request/get_crypto_historical_bars_request.py +1 -1
  19. webull/data/request/get_crypto_instruments_request.py +5 -1
  20. webull/data/request/get_crypto_instruments_request_v2.py +41 -0
  21. webull/data/request/get_crypto_snapshot_request.py +1 -1
  22. webull/data/request/get_dividend_calendar_request.py +1 -1
  23. webull/data/request/get_earnings_calendar_request.py +1 -1
  24. webull/data/request/get_eod_bars_request.py +1 -1
  25. webull/data/request/get_event_bars_request.py +1 -1
  26. webull/data/request/get_event_depth_request.py +2 -1
  27. webull/data/request/get_event_events_request.py +2 -1
  28. webull/data/request/get_event_instrument_request.py +5 -1
  29. webull/data/request/get_event_instrument_request_v2.py +45 -0
  30. webull/data/request/get_event_series_categories.py +2 -1
  31. webull/data/request/get_event_series_request.py +5 -1
  32. webull/data/request/get_event_series_request_v2.py +37 -0
  33. webull/data/request/get_event_snapshot_request.py +2 -1
  34. webull/data/request/get_event_tick_request.py +2 -1
  35. webull/data/request/get_financials_alert_request.py +1 -1
  36. webull/data/request/get_financials_balance_sheet_request.py +1 -1
  37. webull/data/request/get_financials_cashflow_request.py +1 -1
  38. webull/data/request/get_financials_income_request.py +1 -1
  39. webull/data/request/get_financials_indicators_request.py +1 -1
  40. webull/data/request/get_footprint_request.py +1 -1
  41. webull/data/request/get_forecast_eps_request.py +1 -1
  42. webull/data/request/get_fund_allocation_request.py +1 -1
  43. webull/data/request/get_fund_brief_request.py +1 -1
  44. webull/data/request/get_fund_dividends_request.py +5 -1
  45. webull/data/request/get_fund_dividends_request_v2.py +35 -0
  46. webull/data/request/get_fund_files_request.py +1 -1
  47. webull/data/request/get_fund_holdings_request.py +1 -1
  48. webull/data/request/get_fund_net_value_request.py +1 -1
  49. webull/data/request/get_fund_performance_request.py +1 -1
  50. webull/data/request/get_fund_rating_request.py +1 -1
  51. webull/data/request/get_fund_splits_request.py +1 -1
  52. webull/data/request/get_futures_depth_request.py +1 -1
  53. webull/data/request/get_futures_footprint_request.py +1 -1
  54. webull/data/request/get_futures_historical_bars_request.py +1 -1
  55. webull/data/request/get_futures_instruments_by_code_request.py +1 -1
  56. webull/data/request/get_futures_instruments_request.py +2 -1
  57. webull/data/request/get_futures_product_class.py +2 -1
  58. webull/data/request/get_futures_products_request.py +2 -1
  59. webull/data/request/get_futures_snapshot_request.py +1 -1
  60. webull/data/request/get_futures_tick_request.py +1 -1
  61. webull/data/request/get_historical_bars_request.py +1 -1
  62. webull/data/request/get_industry_comparison_request.py +1 -1
  63. webull/data/request/get_instruments_request.py +5 -1
  64. webull/data/request/get_instruments_request_v2.py +44 -0
  65. webull/data/request/get_noii_bars_request.py +1 -1
  66. webull/data/request/get_noii_snapshot_request.py +2 -1
  67. webull/data/request/get_option_bars_request.py +1 -1
  68. webull/data/request/get_option_contracts_request.py +5 -1
  69. webull/data/request/get_option_contracts_request_v2.py +78 -0
  70. webull/data/request/get_option_snapshot_request.py +1 -1
  71. webull/data/request/get_option_tick_request.py +1 -1
  72. webull/data/request/get_quotes_request.py +1 -1
  73. webull/data/request/get_sec_filings_request.py +1 -1
  74. webull/data/request/get_snapshot_request.py +1 -1
  75. webull/data/request/get_tick_request.py +1 -1
  76. webull/data/request/screener/get_52whl_request.py +4 -0
  77. webull/data/request/screener/get_52whl_request_v2.py +45 -0
  78. webull/data/request/screener/get_gainers_losers_request.py +5 -1
  79. webull/data/request/screener/get_gainers_losers_request_v2.py +94 -0
  80. webull/data/request/screener/get_high_dividend_request.py +4 -0
  81. webull/data/request/screener/get_high_dividend_request_v2.py +41 -0
  82. webull/data/request/screener/get_market_sectors_detail_request.py +4 -0
  83. webull/data/request/screener/get_market_sectors_detail_request_v2.py +47 -0
  84. webull/data/request/screener/get_market_sectors_request.py +5 -1
  85. webull/data/request/screener/get_market_sectors_request_v2.py +43 -0
  86. webull/data/request/screener/get_most_active_request.py +5 -1
  87. webull/data/request/screener/get_most_active_request_v2.py +92 -0
  88. webull/data/request/subscribe_request.py +1 -1
  89. webull/data/request/unsubscribe_request.py +1 -1
  90. webull/data/request/watchlist/add_watchlist_instruments_request.py +2 -1
  91. webull/data/request/watchlist/create_watchlist_request.py +1 -1
  92. webull/data/request/watchlist/delete_watchlist_request.py +1 -1
  93. webull/data/request/watchlist/get_watchlist_instruments_request.py +2 -1
  94. webull/data/request/watchlist/get_watchlist_request.py +1 -1
  95. webull/data/request/watchlist/remove_watchlist_instruments_request.py +2 -1
  96. webull/data/request/watchlist/update_watchlist_instruments_request.py +2 -1
  97. webull/data/request/watchlist/update_watchlist_request.py +1 -1
  98. webull/trade/__init__.py +1 -1
  99. webull/trade/request/cancel_order_request.py +1 -1
  100. webull/trade/request/get_account_balance_request.py +1 -1
  101. webull/trade/request/get_account_positions_request.py +1 -1
  102. webull/trade/request/get_account_profile_request.py +1 -1
  103. webull/trade/request/get_activities_request.py +4 -0
  104. webull/trade/request/get_activities_request_v2.py +41 -0
  105. webull/trade/request/get_app_subscriptions.py +1 -1
  106. webull/trade/request/get_open_orders_request.py +1 -1
  107. webull/trade/request/get_order_detail_request.py +1 -1
  108. webull/trade/request/get_today_orders_request.py +1 -1
  109. webull/trade/request/get_trade_calendar_request.py +1 -1
  110. webull/trade/request/get_trade_instrument_detail_request.py +1 -1
  111. webull/trade/request/get_trade_security_detail_request.py +1 -1
  112. webull/trade/request/get_tradeable_instruments_request.py +1 -1
  113. webull/trade/request/palce_order_request.py +1 -1
  114. webull/trade/request/place_order_request.py +1 -1
  115. webull/trade/request/place_order_request_v2.py +1 -1
  116. webull/trade/request/replace_order_request.py +1 -1
  117. webull/trade/request/replace_order_request_v2.py +1 -1
  118. webull/trade/request/v2/cancel_option_request.py +1 -1
  119. webull/trade/request/v2/cancel_order_request.py +1 -1
  120. webull/trade/request/v2/get_account_balance_request.py +1 -1
  121. webull/trade/request/v2/get_account_list.py +1 -3
  122. webull/trade/request/v2/get_account_list_request.py +1 -3
  123. webull/trade/request/v2/get_account_position_details_request.py +4 -0
  124. webull/trade/request/v2/get_account_position_details_request_v2.py +31 -0
  125. webull/trade/request/v2/get_account_positions_request.py +1 -1
  126. webull/trade/request/v2/get_order_detail_request.py +1 -1
  127. webull/trade/request/v2/get_order_executions_request.py +5 -0
  128. webull/trade/request/v2/get_order_executions_request_v2.py +35 -0
  129. webull/trade/request/v2/get_order_history_request.py +1 -1
  130. webull/trade/request/v2/get_order_open_request.py +1 -1
  131. webull/trade/request/v2/palce_order_request.py +1 -1
  132. webull/trade/request/v2/place_option_request.py +1 -1
  133. webull/trade/request/v2/place_order_request.py +1 -1
  134. webull/trade/request/v2/preview_option_request.py +1 -1
  135. webull/trade/request/v2/preview_order_request.py +1 -1
  136. webull/trade/request/v2/replace_option_request.py +1 -1
  137. webull/trade/request/v2/replace_order_request.py +1 -1
  138. webull/trade/request/v3/batch_place_order_request.py +1 -1
  139. webull/trade/request/v3/cancel_order_request.py +1 -1
  140. webull/trade/request/v3/get_order_detail_request.py +1 -1
  141. webull/trade/request/v3/get_order_history_request.py +5 -1
  142. webull/trade/request/v3/get_order_history_request_v2.py +35 -0
  143. webull/trade/request/v3/get_order_open_request.py +5 -1
  144. webull/trade/request/v3/get_order_open_request_v2.py +27 -0
  145. webull/trade/request/v3/place_order_request.py +1 -1
  146. webull/trade/request/v3/preview_order_request.py +1 -1
  147. webull/trade/request/v3/replace_order_request.py +1 -1
  148. webull/trade/trade/activity.py +33 -0
  149. webull/trade/trade/v2/account_info_v2.py +24 -0
  150. webull/trade/trade/v3/{order_opration_v3.py → order_operation_v3.py} +94 -1
  151. webull/trade/trade_client.py +1 -1
  152. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/METADATA +1 -1
  153. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/RECORD +157 -140
  154. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/WHEEL +0 -0
  155. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/licenses/LICENSE +0 -0
  156. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/licenses/NOTICE +0 -0
  157. {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/top_level.txt +0 -0
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class PlaceOptionRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/option/order/place", version='v2', method="POST", body_params={})
22
+ super().__init__("/openapi/trade/option/order/place", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_new_orders(self, new_orders):
25
25
  self.add_body_params("new_orders", new_orders)
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
18
18
 
19
19
  class PlaceOrderRequest(ApiRequest):
20
20
  def __init__(self):
21
- super().__init__("/openapi/trade/stock/order/place", version='v2', method="POST", body_params={})
21
+ super().__init__("/openapi/trade/stock/order/place", version='v3', method="POST", body_params={})
22
22
 
23
23
  def set_new_orders(self, new_orders):
24
24
  self.add_body_params("new_orders", new_orders)
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class PreviewOptionRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/option/order/preview", version='v2', method="POST", body_params={})
22
+ super().__init__("/openapi/trade/option/order/preview", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_new_orders(self, new_orders):
25
25
  self.add_body_params("new_orders", new_orders)
@@ -16,7 +16,7 @@ from webull.core.request import ApiRequest
16
16
 
17
17
  class PreviewOrderRequest(ApiRequest):
18
18
  def __init__(self):
19
- super().__init__("/openapi/trade/stock/order/preview", version='v2', method="POST", body_params={})
19
+ super().__init__("/openapi/trade/stock/order/preview", version='v3', method="POST", body_params={})
20
20
 
21
21
  def set_new_orders(self, new_orders):
22
22
  self.add_body_params("new_orders", new_orders)
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class ReplaceOptionRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/option/order/replace", version='v2', method="POST", body_params={})
22
+ super().__init__("/openapi/trade/option/order/replace", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_modify_orders(self, modify_orders):
25
25
  self.add_body_params("modify_orders", modify_orders)
@@ -16,7 +16,7 @@ from webull.core.request import ApiRequest
16
16
 
17
17
  class ReplaceOrderRequest(ApiRequest):
18
18
  def __init__(self):
19
- ApiRequest.__init__(self, "/openapi/trade/stock/order/replace", version='v2', method="POST", body_params={})
19
+ ApiRequest.__init__(self, "/openapi/trade/stock/order/replace", version='v3', method="POST", body_params={})
20
20
 
21
21
  def set_modify_orders(self, modify_orders):
22
22
  self.add_body_params("modify_orders", modify_orders)
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class BatchPlaceOrderRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/order/batch-place", version='v2', method="POST", body_params={})
22
+ super().__init__("/trading/orders/batch-place", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_account_id(self, account_id):
25
25
  self.add_body_params("account_id", account_id)
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
18
18
 
19
19
  class CancelOrderRequest(ApiRequest):
20
20
  def __init__(self):
21
- ApiRequest.__init__(self, "/openapi/trade/order/cancel", version='v2', method="POST", body_params={})
21
+ ApiRequest.__init__(self, "/trading/orders/cancel", version='v3', method="POST", body_params={})
22
22
 
23
23
  def set_account_id(self, account_id):
24
24
  self.add_body_params("account_id", account_id)
@@ -17,7 +17,7 @@ from webull.core.request import ApiRequest
17
17
 
18
18
  class OrderDetailRequest(ApiRequest):
19
19
  def __init__(self):
20
- ApiRequest.__init__(self, "/openapi/trade/order/detail", version='v2', method="GET", query_params={})
20
+ ApiRequest.__init__(self, "/trading/orders/get", version='v3', method="GET", query_params={})
21
21
 
22
22
  def set_account_id(self, account_id):
23
23
  self.add_query_param("account_id", account_id)
@@ -16,8 +16,12 @@ from webull.core.request import ApiRequest
16
16
 
17
17
 
18
18
  class OrderHistoryRequest(ApiRequest):
19
+ """
20
+ .. deprecated::
21
+ Use :class:`OrderHistoryRequestV2` instead.
22
+ """
19
23
  def __init__(self):
20
- ApiRequest.__init__(self, "/openapi/trade/order/history", version='v2', method="GET", query_params={})
24
+ ApiRequest.__init__(self, "/trading/orders/historical-orders/list", version='v2', method="GET", query_params={})
21
25
 
22
26
  def set_account_id(self, account_id):
23
27
  self.add_query_param("account_id", account_id)
@@ -0,0 +1,35 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from webull.core.request import ApiRequest
16
+
17
+
18
+ class OrderHistoryRequestV2(ApiRequest):
19
+ def __init__(self):
20
+ ApiRequest.__init__(self, "/trading/orders/historical-orders/list", version='v3', method="GET", query_params={})
21
+
22
+ def set_account_id(self, account_id):
23
+ self.add_query_param("account_id", account_id)
24
+
25
+ def set_start_time(self, start_time):
26
+ if start_time is not None:
27
+ self.add_query_param("start_time", start_time)
28
+
29
+ def set_end_time(self, end_time):
30
+ if end_time is not None:
31
+ self.add_query_param("end_time", end_time)
32
+
33
+ def set_pagination_key(self, pagination_key):
34
+ if pagination_key:
35
+ self.add_query_param("pagination_key", pagination_key)
@@ -16,8 +16,12 @@ from webull.core.request import ApiRequest
16
16
 
17
17
 
18
18
  class OrderOpenRequest(ApiRequest):
19
+ """
20
+ .. deprecated::
21
+ Use :class:`OrderOpenRequestV2` instead.
22
+ """
19
23
  def __init__(self):
20
- ApiRequest.__init__(self, "/openapi/trade/order/open", version='v2', method="GET", query_params={})
24
+ ApiRequest.__init__(self, "/trading/orders/open-orders/list", version='v2', method="GET", query_params={})
21
25
 
22
26
  def set_account_id(self, account_id):
23
27
  self.add_query_param("account_id", account_id)
@@ -0,0 +1,27 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from webull.core.request import ApiRequest
16
+
17
+
18
+ class OrderOpenRequestV2(ApiRequest):
19
+ def __init__(self):
20
+ ApiRequest.__init__(self, "/trading/orders/open-orders/list", version='v3', method="GET", query_params={})
21
+
22
+ def set_account_id(self, account_id):
23
+ self.add_query_param("account_id", account_id)
24
+
25
+ def set_pagination_key(self, pagination_key):
26
+ if pagination_key:
27
+ self.add_query_param("pagination_key", pagination_key)
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class PlaceOrderRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/order/place", version='v2', method="POST", body_params={})
22
+ super().__init__("/trading/orders/place", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_new_orders(self, new_orders):
25
25
  self.add_body_params("new_orders", new_orders)
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
19
19
 
20
20
  class PreviewOrderRequest(ApiRequest):
21
21
  def __init__(self):
22
- super().__init__("/openapi/trade/order/preview", version='v2', method="POST", body_params={})
22
+ super().__init__("/trading/orders/preview", version='v3', method="POST", body_params={})
23
23
 
24
24
  def set_new_orders(self, new_orders):
25
25
  self.add_body_params("new_orders", new_orders)
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
18
18
 
19
19
  class ReplaceOrderRequest(ApiRequest):
20
20
  def __init__(self):
21
- ApiRequest.__init__(self, "/openapi/trade/order/replace", version='v2', method="POST", body_params={})
21
+ ApiRequest.__init__(self, "/trading/orders/replace", version='v3', method="POST", body_params={})
22
22
 
23
23
  def set_modify_orders(self, modify_orders):
24
24
  self.add_body_params("modify_orders", modify_orders)
@@ -15,6 +15,7 @@
15
15
  # coding=utf-8
16
16
 
17
17
  from webull.trade.request.get_activities_request import GetActivitiesRequest
18
+ from webull.trade.request.get_activities_request_v2 import GetActivitiesRequestV2
18
19
 
19
20
 
20
21
  class Activity:
@@ -24,6 +25,11 @@ class Activity:
24
25
  def get_activities(self, account_id, activity_types=None, start_time=None, end_time=None,
25
26
  last_activity_id=None, page_size=10):
26
27
  """
28
+ .. deprecated::
29
+ Use :meth:`list_activities` instead.
30
+
31
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
32
+
27
33
  Query cash activities by type with pagination support.
28
34
  This interface is currently supported only for Webull US.
29
35
 
@@ -47,3 +53,30 @@ class Activity:
47
53
  get_activities_request.set_page_size(page_size)
48
54
  response = self.client.get_response(get_activities_request)
49
55
  return response
56
+
57
+ def list_activities(self, account_id, activity_types=None, start_time=None, end_time=None,
58
+ pagination_key=None):
59
+ """
60
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
61
+
62
+ Query cash activities by type with pagination support.
63
+ This interface is currently supported only for Webull US.
64
+
65
+ :param account_id: Account ID
66
+ :param activity_types: Activity types filter, comma-separated string (optional)
67
+ :param start_time: Start time filter (optional)
68
+ :param end_time: End time filter (optional)
69
+ :param pagination_key: Pagination key from the previous page response; not returned on the last page.
70
+ """
71
+ get_activities_request = GetActivitiesRequestV2()
72
+ get_activities_request.set_account_id(account_id)
73
+ if activity_types is not None:
74
+ get_activities_request.set_activity_types(activity_types)
75
+ if start_time is not None:
76
+ get_activities_request.set_start_time(start_time)
77
+ if end_time is not None:
78
+ get_activities_request.set_end_time(end_time)
79
+ if pagination_key is not None:
80
+ get_activities_request.set_pagination_key(pagination_key)
81
+ response = self.client.get_response(get_activities_request)
82
+ return response
@@ -16,6 +16,7 @@
16
16
  from webull.trade.request.v2.get_account_balance_request import AccountBalanceRequest
17
17
  from webull.trade.request.v2.get_account_list_request import GetAccountListRequest
18
18
  from webull.trade.request.v2.get_account_position_details_request import AccountPositionDetailsRequest
19
+ from webull.trade.request.v2.get_account_position_details_request_v2 import AccountPositionDetailsRequestV2
19
20
  from webull.trade.request.v2.get_account_positions_request import AccountPositionsRequest
20
21
 
21
22
 
@@ -54,6 +55,11 @@ class AccountV2:
54
55
 
55
56
  def get_account_position_details(self, account_id, instrument_id, page_size=None, last_id=None):
56
57
  """
58
+ .. deprecated::
59
+ Use :meth:`list_position_details` instead.
60
+
61
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
62
+
57
63
  This interface is currently supported only for Webull JP.
58
64
  Support for other regions will be available in future updates.
59
65
  """
@@ -64,3 +70,21 @@ class AccountV2:
64
70
  account_position_details_request.set_last_id(last_id)
65
71
  response = self.client.get_response(account_position_details_request)
66
72
  return response
73
+
74
+ def list_position_details(self, account_id, instrument_id, pagination_key=None):
75
+ """
76
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
77
+
78
+ This interface is currently supported only for Webull JP.
79
+ Support for other regions will be available in future updates.
80
+
81
+ :param account_id: Account ID
82
+ :param instrument_id: Instrument ID
83
+ :param pagination_key: Pagination key from the previous page response; not returned on the last page.
84
+ """
85
+ account_position_details_request = AccountPositionDetailsRequestV2()
86
+ account_position_details_request.set_account_id(account_id)
87
+ account_position_details_request.set_instrument_id(instrument_id)
88
+ account_position_details_request.set_pagination_key(pagination_key)
89
+ response = self.client.get_response(account_position_details_request)
90
+ return response
@@ -19,8 +19,11 @@ from webull.trade.request.v3.replace_order_request import ReplaceOrderRequest
19
19
  from webull.trade.request.v3.cancel_order_request import CancelOrderRequest
20
20
  from webull.trade.request.v3.get_order_detail_request import OrderDetailRequest
21
21
  from webull.trade.request.v3.get_order_history_request import OrderHistoryRequest
22
+ from webull.trade.request.v3.get_order_history_request_v2 import OrderHistoryRequestV2
22
23
  from webull.trade.request.v3.get_order_open_request import OrderOpenRequest
24
+ from webull.trade.request.v3.get_order_open_request_v2 import OrderOpenRequestV2
23
25
  from webull.trade.request.v2.get_order_executions_request import GetOrderExecutionsRequest
26
+ from webull.trade.request.v2.get_order_executions_request_v2 import GetOrderExecutionsRequestV2
24
27
 
25
28
 
26
29
  class OrderOperationV3:
@@ -105,9 +108,14 @@ class OrderOperationV3:
105
108
 
106
109
  def get_order_history(self, account_id, page_size=None, start_date=None, end_date=None, last_client_order_id=None):
107
110
  """
111
+ .. deprecated::
112
+ Use :meth:`list_order_history` instead.
113
+
108
114
  This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
109
115
  Support for other regions will be available in future updates.
110
116
 
117
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
118
+
111
119
  Historical orders. If they are group orders, will be returned together,
112
120
  and the number of orders returned on one-page may exceed the page_size.
113
121
 
@@ -136,11 +144,42 @@ class OrderOperationV3:
136
144
  response = self.client.get_response(order_history_request)
137
145
  return response
138
146
 
147
+ def list_order_history(self, account_id, start_time=None, end_time=None, pagination_key=None):
148
+ """
149
+ This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
150
+ Support for other regions will be available in future updates.
151
+
152
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
153
+
154
+ Historical orders. If they are group orders, will be returned together,
155
+ and the number of orders returned on one-page may exceed the page size.
156
+
157
+ :param account_id: Account ID
158
+ :param start_time: Start time, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
159
+ :param end_time: End time, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
160
+ :param pagination_key: Pagination key from the previous page response; not returned on the last page.
161
+ """
162
+ order_history_request = OrderHistoryRequestV2()
163
+ order_history_request.set_account_id(account_id=account_id)
164
+ if start_time:
165
+ order_history_request.set_start_time(start_time=start_time)
166
+ if end_time:
167
+ order_history_request.set_end_time(end_time=end_time)
168
+ if pagination_key:
169
+ order_history_request.set_pagination_key(pagination_key=pagination_key)
170
+ response = self.client.get_response(order_history_request)
171
+ return response
172
+
139
173
  def get_order_open(self, account_id, page_size=None, last_client_order_id=None):
140
174
  """
175
+ .. deprecated::
176
+ Use :meth:`list_order_open` instead.
177
+
141
178
  This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
142
179
  Support for other regions will be available in future updates.
143
180
 
181
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
182
+
144
183
  Paging query pending orders.
145
184
 
146
185
  :param account_id: Account ID
@@ -162,11 +201,36 @@ class OrderOperationV3:
162
201
  response = self.client.get_response(order_open_request)
163
202
  return response
164
203
 
165
- def get_order_executions(self, account_id, client_order_id=None, start_date=None, end_date=None, last_execution_id=None, page_size=None):
204
+ def list_order_open(self, account_id, pagination_key=None):
205
+ """
206
+ This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
207
+ Support for other regions will be available in future updates.
208
+
209
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
210
+
211
+ Paging query pending orders.
212
+
213
+ :param account_id: Account ID
214
+ :param pagination_key: Pagination key from the previous page response; not returned on the last page.
215
+ """
216
+ order_open_request = OrderOpenRequestV2()
217
+ order_open_request.set_account_id(account_id=account_id)
218
+ if pagination_key:
219
+ order_open_request.set_pagination_key(pagination_key=pagination_key)
220
+ response = self.client.get_response(order_open_request)
221
+ return response
222
+
223
+ def get_order_executions(self, account_id, client_order_id=None, start_date=None, end_date=None,
224
+ last_execution_id=None, page_size=None):
166
225
  """
226
+ .. deprecated::
227
+ Use :meth:`list_order_executions` instead.
228
+
167
229
  This interface is currently supported only for Webull HK.
168
230
  Support for other regions will be available in future updates.
169
231
 
232
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
233
+
170
234
  Query order execution records within a specified date range.
171
235
 
172
236
  :param account_id: Account ID (required).
@@ -191,3 +255,32 @@ class OrderOperationV3:
191
255
  request.set_page_size(page_size)
192
256
  response = self.client.get_response(request)
193
257
  return response
258
+
259
+ def list_order_executions(self, account_id, client_order_id=None, start_date=None, end_date=None,
260
+ pagination_key=None):
261
+ """
262
+ This interface is currently supported only for Webull HK.
263
+ Support for other regions will be available in future updates.
264
+
265
+ The x-version header distinguishes the legacy and new pagination protocols for this path.
266
+
267
+ Query order execution records within a specified date range.
268
+
269
+ :param account_id: Account ID (required).
270
+ :param client_order_id: The 3rd party order ID.
271
+ :param start_date: Start date in the format of yyyy-MM-dd.
272
+ :param end_date: End date in the format of yyyy-MM-dd.
273
+ :param pagination_key: Pagination key from previous response for next page.
274
+ """
275
+ request = GetOrderExecutionsRequestV2()
276
+ request.set_account_id(account_id)
277
+ if start_date:
278
+ request.set_start_date(start_date)
279
+ if end_date:
280
+ request.set_end_date(end_date)
281
+ if client_order_id:
282
+ request.set_client_order_id(client_order_id)
283
+ if pagination_key is not None:
284
+ request.set_pagination_key(pagination_key)
285
+ response = self.client.get_response(request)
286
+ return response
@@ -22,7 +22,7 @@ from webull.trade.trade.trade_calendar import TradeCalendar
22
22
  from webull.trade.trade.trade_instrument import TradeInstrument
23
23
  from webull.trade.trade.v2.account_info_v2 import AccountV2
24
24
  from webull.trade.trade.v2.order_operation_v2 import OrderOperationV2
25
- from webull.trade.trade.v3.order_opration_v3 import OrderOperationV3
25
+ from webull.trade.trade.v3.order_operation_v3 import OrderOperationV3
26
26
 
27
27
 
28
28
  class TradeClient:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webull-openapi-python-sdk
3
- Version: 2.0.19
3
+ Version: 3.0.0
4
4
  Summary: Webull Python SDK.
5
5
  Home-page:
6
6
  Author: Webull