Skip to content

Commit 3023cb0

Browse files
author
方佳
committed
Merge branch 'main_merge_2605111' into 'main'
feat:add sg region and fix data api See merge request webull/webull-openapi-python-sdk!29
2 parents 4c5149f + ab50946 commit 3023cb0

13 files changed

Lines changed: 45 additions & 21 deletions

File tree

‎README.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Webull OpenAPI Python SDK
22

3-
Note: This is the new version of the Webull SDK, currently applicable only to Webull Hong Kong, Webull US, or Webull JP customers.
3+
Note: This is the new version of the Webull SDK, currently applicable only to Webull Hong Kong, Webull US, or Webull JP, or Webull SG customers.
44

55
Webull OpenAPI aims to provide quantitative trading investors with convenient, fast and secure services. Webull aims to help every quant traders achieve flexible and changeable trading or market strategies.
66

@@ -23,6 +23,7 @@ Subscription to real-time information: Subscribe to order status changes, market
2323
| Webull HK | https://www.webull.hk/open-api |
2424
| Webull US | https://www.webull.com/center#openApiManagement |
2525
| Webull JP | https://www.webull.co.jp/center/openapi/manage |
26+
| Webull SG | https://www.webull.com.sg/open-api-management|
2627

2728
- Requires Python 3.7 through 3.11.
2829

@@ -43,3 +44,4 @@ The bottom layer of Webull OpenAPI provides three protocols, HTTP / GRPC / MQTT,
4344
| Webull HK | https://developer.webull.hk/apis/docs |
4445
| Webull US | https://developer.webull.com/apis/docs |
4546
| Webull JP | https://developer.webull.co.jp/apis/docs |
47+
| Webull SG | https://developer.webull.com.sg/apis/docs |

‎samples/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.0.6'
1+
__version__ = '2.0.7'

‎tests/core/endpoint/test_endpoint.py‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ def test_quotes_endpoint(self):
5858
_region_id = 'jp'
5959
endpoint_request = ResolveEndpointRequest(_region_id, api_type.QUOTES)
6060
endpoint = resolver.resolve(endpoint_request)
61-
self.assertEqual(endpoint, '')
61+
self.assertEqual(endpoint, 'data-api.webull.co.jp')
62+
63+
_region_id = 'sg'
64+
endpoint_request = ResolveEndpointRequest(_region_id, api_type.QUOTES)
65+
endpoint = resolver.resolve(endpoint_request)
66+
self.assertEqual(endpoint, 'data-api.webull.com.sg')
6267

6368
def test_api_endpoint(self):
6469
"""
@@ -80,6 +85,10 @@ def test_api_endpoint(self):
8085
endpoint = resolver.resolve(endpoint_request)
8186
self.assertEqual(endpoint, 'api.webull.co.jp')
8287

88+
_region_id = 'sg'
89+
endpoint_request = ResolveEndpointRequest(_region_id)
90+
endpoint = resolver.resolve(endpoint_request)
91+
self.assertEqual(endpoint, 'api.webull.com.sg')
8392
def test_event_endpoint(self):
8493
resolver = DefaultEndpointResolver(self)
8594
_region_id = 'us'
@@ -96,3 +105,8 @@ def test_event_endpoint(self):
96105
endpoint_request = ResolveEndpointRequest(_region_id, api_type.EVENTS)
97106
endpoint = resolver.resolve(endpoint_request)
98107
self.assertEqual(endpoint, 'events-api.webull.co.jp')
108+
109+
_region_id = 'sg'
110+
endpoint_request = ResolveEndpointRequest(_region_id, api_type.EVENTS)
111+
endpoint = resolver.resolve(endpoint_request)
112+
self.assertEqual(endpoint, 'events-api.webull.com.sg')

‎webull/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.0.6'
1+
__version__ = '2.0.7'

‎webull/core/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '2.0.6'
1+
__version__ = '2.0.7'
22

33
import logging
44

‎webull/core/common/region.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ class Region(Enum):
55
US = 'us'
66
HK = 'hk'
77
JP = 'jp'
8+
SG = 'sg'

‎webull/core/data/endpoints.json‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"default_region": "us",
3-
"regions": ["us", "hk", "jp"],
3+
"regions": ["us", "hk", "jp","sg"],
44
"region_mapping": {
55
"us": {
66
"api": "api.webull.com",
@@ -14,8 +14,13 @@
1414
},
1515
"jp": {
1616
"api": "api.webull.co.jp",
17-
"quotes-api": "",
17+
"quotes-api": "data-api.webull.co.jp",
1818
"events-api": "events-api.webull.co.jp"
19+
},
20+
"sg": {
21+
"api": "api.webull.com.sg",
22+
"quotes-api": "data-api.webull.com.sg",
23+
"events-api": "events-api.webull.com.sg"
1924
}
2025
}
2126
}

‎webull/data/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# coding=utf-8
22

3-
__version__ = '2.0.6'
3+
__version__ = '2.0.7'

‎webull/data/request/subscribe_request.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919

2020
class SubscribeRequest(ApiRequest):
2121
def __init__(self):
22-
ApiRequest.__init__(self, "/market-data/streaming/subscribe", version='v2', method="POST", query_params={})
22+
ApiRequest.__init__(self, "/openapi/market-data/streaming/subscribe", version='v2', method="POST",
23+
query_params={})
2324
self.set_body_params({})
2425

2526
def set_session_id(self, session_id):

‎webull/data/request/unsubscribe_request.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919

2020
class UnsubcribeRequest(ApiRequest):
2121
def __init__(self):
22-
ApiRequest.__init__(self, "/market-data/streaming/unsubscribe", version='v2', method="POST", query_params={})
22+
ApiRequest.__init__(self, "/openapi/market-data/streaming/unsubscribe", version='v2', method="POST",
23+
query_params={})
2324
self.set_body_params({})
2425

2526
def set_session_id(self, session_id):

0 commit comments

Comments
 (0)