Skip to content

Commit 0206cd2

Browse files
author
方佳
committed
Merge branch 'main_merge_20260706' into 'main'
feat: Add AU mcp features See merge request webull/webull-openapi-mcp!9
2 parents 3ab611b + 14e43f0 commit 0206cd2

6 files changed

Lines changed: 136 additions & 31 deletions

File tree

‎.env.example‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ WEBULL_APP_SECRET=
2020
# Set to 'prod' for live trading (use with caution)
2121
# WEBULL_ENVIRONMENT=uat
2222

23-
# Region ID: us, hk, jp, sg, th, my, uk, mx, or br
23+
# Region ID: us, hk, jp, sg, th, my, uk, mx, br, eu, za, or au
2424
# Default: us
2525
# WEBULL_REGION_ID=us
2626

‎README.md‎

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ See [DISCLAIMER.md](DISCLAIMER.md) for the full disclaimer.
1717

1818
## Features
1919

20-
- **Multi-Region Support** — US, HK, JP, SG, TH, MY, UK, MX, and BR regions with region-specific order types, trading sessions, and validation
20+
- **Multi-Region Support** — US, HK, JP, SG, TH, MY, UK, MX, BR, and AU regions with region-specific order types, trading sessions, and validation
2121
- **Market Data** — Real-time snapshots, tick data, quotes (depth), footprint, and OHLCV bars for stocks, futures, crypto, and event contracts
2222
- **NOII Data** — Net Order Imbalance Indicator bars and snapshots for US stock opening/closing auctions
2323
- **Screener** — Top gainers/losers, most active, market sectors, high dividend, and 52-week high/low rankings
@@ -111,6 +111,9 @@ Here are some prompts you can use with your AI assistant:
111111
- TH: [developer.webull.co.th](https://developer.webull.co.th/apis/home)
112112
- MY: [developer.webull.com.my](https://developer.webull.com.my/apis/home)
113113
- UK: [developer.webull-uk.com](https://developer.webull-uk.com/apis/home)
114+
<!-- - EU: [developer.webull.eu](https://developer.webull.eu/apis/home) -->
115+
<!-- - ZA: [developer.webull.co.za](https://developer.webull.co.za/apis/home) -->
116+
- AU: [developer.webull.com.au](https://developer.webull.com.au/apis/home)
114117
- MX: [developer.webull.com.mx](https://developer.webull.com.mx/apis/home)
115118
- BR: [developer.webull.com.br](https://developer.webull.com.br/apis/home)
116119
2. **API Credentials** — Obtain your `App Key` and `App Secret`
@@ -122,6 +125,9 @@ Here are some prompts you can use with your AI assistant:
122125
- TH: [webull.co.th/quote](https://www.webull.co.th/quote) | [Guide](https://developer.webull.co.th/apis/docs/market-data-api/subscribe-quotes)
123126
- MY: [webull.com.my/quote](https://www.webull.com.my/quote) | [Guide](https://developer.webull.com.my/apis/docs/market-data-api/subscribe-quotes)
124127
- UK: [webull-uk.com/quote](https://www.webull-uk.com/quote) | [Guide](https://developer.webull-uk.com/apis/docs/market-data-api/subscribe-quotes)
128+
<!-- - EU: [webullapp.eu/quote](https://www.webullapp.eu/quote) | [Guide](https://developer.webull.eu/apis/docs/market-data-api/subscribe-quotes) -->
129+
<!-- - ZA: [webullapp.co.za/quote](https://www.webullapp.co.za/quote) | [Guide](https://developer.webull.co.za/apis/docs/market-data-api/subscribe-quotes) -->
130+
- AU: [webullapp.com.au/quote](https://www.webullapp.com.au/quote) | [Guide](https://developer.webull.com.au/apis/docs/market-data-api/subscribe-quotes)
125131
- MX: [webull.com.mx/quote](https://www.webull.com.mx/quote) | [Guide](https://developer.webull.com.mx/apis/docs/market-data-api/subscribe-quotes)
126132
- BR: [webull.com.br/quote](https://www.webull.com.br/quote) | [Guide](https://developer.webull.com.br/apis/docs/market-data-api/subscribe-quotes)
127133
4. **Python 3.10+**
@@ -266,7 +272,7 @@ Add to your MCP configuration:
266272
| `WEBULL_APP_KEY` | App Key (required) | — |
267273
| `WEBULL_APP_SECRET` | App Secret (required) | — |
268274
| `WEBULL_ENVIRONMENT` | `uat` (sandbox) or `prod` | `uat` |
269-
| `WEBULL_REGION_ID` | `us`, `hk`, `jp`, `sg`, `th`, `my`, `uk`, `mx`, or `br` | `us` |
275+
| `WEBULL_REGION_ID` | `us`, `hk`, `jp`, `sg`, `th`, `my`, `uk`, `mx`, `br`, or `au` | `us` |
270276
| `WEBULL_TOOLSETS` | Enabled tool categories (comma-separated). Valid values: `account`, `market-data`, `trading`, `instrument` | (all enabled) |
271277
| `WEBULL_MAX_ORDER_NOTIONAL_USD` | Max order value for US market (USD) | `10000` |
272278
| `WEBULL_MAX_ORDER_NOTIONAL_HKD` | Max order value for HK market (HKD) | `80000` |
@@ -278,7 +284,7 @@ Add to your MCP configuration:
278284
| `WEBULL_AUDIT_LOG_FILE` | Audit log file path | stderr only |
279285
| `WEBULL_LOG_LEVEL` | SDK log level | `WARNING` |
280286

281-
> **Note:** `WEBULL_REGION_ID=us` represents **Webull US** ([developer.webull.com](https://developer.webull.com/apis/home)), `WEBULL_REGION_ID=hk` represents **Webull Hong Kong** ([developer.webull.hk](https://developer.webull.hk/apis/home)), `WEBULL_REGION_ID=jp` represents **Webull Japan** ([developer.webull.co.jp](https://developer.webull.co.jp/)), `WEBULL_REGION_ID=sg` represents **Webull Singapore** ([developer.webull.com.sg](https://developer.webull.com.sg/apis/home)), `WEBULL_REGION_ID=th` represents **Webull Thailand** ([developer.webull.co.th](https://developer.webull.co.th/apis/home)), `WEBULL_REGION_ID=my` represents **Webull Malaysia** ([developer.webull.com.my](https://developer.webull.com.my/apis/home)), `WEBULL_REGION_ID=uk` represents **Webull UK** ([developer.webull-uk.com](https://developer.webull-uk.com/apis/home)), `WEBULL_REGION_ID=mx` represents **Webull Mexico** ([developer.webull.com.mx](https://developer.webull.com.mx/apis/home)), and `WEBULL_REGION_ID=br` represents **Webull Brazil** ([developer.webull.com.br](https://developer.webull.com.br/apis/home)).
287+
> **Note:** `WEBULL_REGION_ID=us` represents **Webull US** ([developer.webull.com](https://developer.webull.com/apis/home)), `WEBULL_REGION_ID=hk` represents **Webull Hong Kong** ([developer.webull.hk](https://developer.webull.hk/apis/home)), `WEBULL_REGION_ID=jp` represents **Webull Japan** ([developer.webull.co.jp](https://developer.webull.co.jp/)), `WEBULL_REGION_ID=sg` represents **Webull Singapore** ([developer.webull.com.sg](https://developer.webull.com.sg/apis/home)), `WEBULL_REGION_ID=th` represents **Webull Thailand** ([developer.webull.co.th](https://developer.webull.co.th/apis/home)), `WEBULL_REGION_ID=my` represents **Webull Malaysia** ([developer.webull.com.my](https://developer.webull.com.my/apis/home)), `WEBULL_REGION_ID=uk` represents **Webull UK** ([developer.webull-uk.com](https://developer.webull-uk.com/apis/home)), `WEBULL_REGION_ID=mx` represents **Webull Mexico** ([developer.webull.com.mx](https://developer.webull.com.mx/apis/home)), `WEBULL_REGION_ID=br` represents **Webull Brazil** ([developer.webull.com.br](https://developer.webull.com.br/apis/home)), and `WEBULL_REGION_ID=au` represents **Webull Australia** ([developer.webull.com.au](https://developer.webull.com.au/apis/home)).
282288

283289
See [.env.example](.env.example) for full configuration template.
284290

@@ -326,29 +332,29 @@ See [.env.example](.env.example) for full configuration template.
326332

327333
### Region Differences
328334

329-
| Feature | US | HK | JP | SG | TH | MY | UK | MX | BR |
330-
|---------|----|----|----|----|----|----|-----|----|----|
331-
| Stock Trading | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
332-
| Option Trading | Yes | Yes | No | No | No | No | No | No | No |
333-
| Futures Trading | Yes | Yes | No | No | No | No | No | No | No |
334-
| Crypto Trading | Yes | No | No | No | No | No | No | No | No |
335-
| Event Contracts | Yes | No | No | No | No | No | No | No | No |
336-
| Combo Orders | Yes | No | No | No | No | No | No | No | No |
337-
| Option Strategies | Yes | No | No | No | No | No | No | No | No |
338-
| Algo Orders | Yes | No | No | No | No | No | No | No | No |
339-
| Screener (Gainers/Losers/Active) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
340-
| Screener (Sectors/Dividend/52W) | Yes | Yes | Yes | No | No | No | No | No | No |
341-
| Watchlist | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
342-
| Fundamental (Company/Analyst) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
343-
| Stock/Fund Fundamentals | Yes | Yes | Yes | No | No | No | No | No | No |
344-
| Financial Statements | Yes | Yes | Yes | No | No | No | No | No | No |
345-
| NOII (Auction Imbalance) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
346-
| Markets | US | US, HK, CN | US, JP | US | US | US | US | US | US |
347-
| Instrument Categories | US_STOCK, US_ETF | US_STOCK, US_ETF, HK_STOCK, CN_STOCK | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF |
348-
| Order Types | LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT, TRAILING_STOP_LOSS, etc. | LIMIT, MARKET, ENHANCED_LIMIT, AT_AUCTION, AT_AUCTION_LIMIT, etc. | JP market: LIMIT, MARKET — US market: LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT |
349-
| Time-in-Force | DAY, GTC | US market: DAY, GTC, GTD — HK market: DAY, GTC — CN market: DAY | JP market: DAY — US market: DAY, GTC, GTD | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC |
350-
| Trading Sessions | ALL, CORE, NIGHT | CORE, ALL_DAY, NIGHT, ALL | CORE, ALL, NIGHT, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY |
351-
| JP Order Fields | — | — | `account_tax_type` required (GENERAL or SPECIFIC); `margin_type` (ONE_DAY or INDEFINITE) and `position_intent` optional margin-account-only fields; `close_contracts` optional | — | — | — | — | — | — |
335+
| Feature | US | HK | JP | SG | TH | MY | UK | MX | BR | AU |
336+
|---------|----|----|----|----|----|----|-----|----|----|-----|
337+
| Stock Trading | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
338+
| Option Trading | Yes | Yes | No | No | No | No | No | No | No | No |
339+
| Futures Trading | Yes | Yes | No | No | No | No | No | No | No | No |
340+
| Crypto Trading | Yes | No | No | No | No | No | No | No | No | No |
341+
| Event Contracts | Yes | No | No | No | No | No | No | No | No | No |
342+
| Combo Orders | Yes | No | No | No | No | No | No | No | No | No |
343+
| Option Strategies | Yes | No | No | No | No | No | No | No | No | No |
344+
| Algo Orders | Yes | No | No | No | No | No | No | No | No | No |
345+
| Screener (Gainers/Losers/Active) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
346+
| Screener (Sectors/Dividend/52W) | Yes | Yes | Yes | No | No | No | No | No | No | No |
347+
| Watchlist | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
348+
| Fundamental (Company/Analyst) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
349+
| Stock/Fund Fundamentals | Yes | Yes | Yes | No | No | No | No | No | No | No |
350+
| Financial Statements | Yes | Yes | Yes | No | No | No | No | No | No | No |
351+
| NOII (Auction Imbalance) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
352+
| Markets | US | US, HK, CN | US, JP | US | US | US | US | US | US | US |
353+
| Instrument Categories | US_STOCK, US_ETF | US_STOCK, US_ETF, HK_STOCK, CN_STOCK | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF | US_STOCK, US_ETF |
354+
| Order Types | LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT, TRAILING_STOP_LOSS, etc. | LIMIT, MARKET, ENHANCED_LIMIT, AT_AUCTION, AT_AUCTION_LIMIT, etc. | JP market: LIMIT, MARKET — US market: LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT | MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT |
355+
| Time-in-Force | DAY, GTC | US market: DAY, GTC, GTD — HK market: DAY, GTC — CN market: DAY | JP market: DAY — US market: DAY, GTC, GTD | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC | DAY, GTC |
356+
| Trading Sessions | ALL, CORE, NIGHT | CORE, ALL_DAY, NIGHT, ALL | CORE, ALL, NIGHT, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY | NIGHT, ALL, CORE, ALL_DAY |
357+
| JP Order Fields | — | — | `account_tax_type` required (GENERAL or SPECIFIC); `margin_type` (ONE_DAY or INDEFINITE) and `position_intent` optional margin-account-only fields; `close_contracts` optional | — | — | — | — | — | — | — |
352358

353359
> **Note:** Screener (Gainers/Losers/Active), Fundamental (Company/Analyst), and NOII currently only support querying US stock data (`US_STOCK` category). Stock/Fund Fundamentals, Financial Statements, and the extended Screener (Sectors/Dividend/52W) are available in US, HK, and JP regions; supported `category` values vary by endpoint (commonly `US_STOCK`, `HK_STOCK`, `CN_STOCK`, `JP_STOCK`). Watchlist supports US stocks and HK stocks.
354360
@@ -439,6 +445,9 @@ Subscribe to quotes:
439445
- TH: [webull.co.th/quote](https://www.webull.co.th/quote) | [Guide](https://developer.webull.co.th/apis/docs/market-data-api/subscribe-quotes)
440446
- MY: [webull.com.my/quote](https://www.webull.com.my/quote) | [Guide](https://developer.webull.com.my/apis/docs/market-data-api/subscribe-quotes)
441447
- UK: [webull-uk.com/quote](https://www.webull-uk.com/quote) | [Guide](https://developer.webull-uk.com/apis/docs/market-data-api/subscribe-quotes)
448+
<!-- - EU: [webullapp.eu/quote](https://www.webullapp.eu/quote) | [Guide](https://developer.webull.eu/apis/docs/market-data-api/subscribe-quotes) -->
449+
<!-- - ZA: [webullapp.co.za/quote](https://www.webullapp.co.za/quote) | [Guide](https://developer.webull.co.za/apis/docs/market-data-api/subscribe-quotes) -->
450+
- AU: [webullapp.com.au/quote](https://www.webullapp.com.au/quote) | [Guide](https://developer.webull.com.au/apis/docs/market-data-api/subscribe-quotes)
442451
- MX: [webull.com.mx/quote](https://www.webull.com.mx/quote) | [Guide](https://developer.webull.com.mx/apis/docs/market-data-api/subscribe-quotes)
443452
- BR: [webull.com.br/quote](https://www.webull.com.br/quote) | [Guide](https://developer.webull.com.br/apis/docs/market-data-api/subscribe-quotes)
444453

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "webull-openapi-mcp"
7-
version = "1.1.4"
7+
version = "1.1.5"
88
description = "MCP Server for Webull OpenAPI - enables AI assistants to securely access Webull trading and market data"
99
readme = "README.md"
1010
license = "Apache-2.0"

‎webull_openapi_mcp/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Webull OpenAPI MCP Server - AI assistant integration for Webull OpenAPI."""
22

3-
__version__ = "1.1.4"
3+
__version__ = "1.1.5"

‎webull_openapi_mcp/region_config.py‎

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Region-specific configuration for Webull MCP Server.
22
3-
Defines region configurations for US, HK, JP, SG, TH, MY, UK, MX, and BR markets with:
3+
Defines region configurations for US, HK, JP, SG, TH, MY, UK, MX, BR, EU, ZA, and AU markets with:
44
- Feature flags (futures, crypto, event contracts, etc.)
55
- Valid enum sets for order types, time-in-force, trading sessions, etc.
66
@@ -277,6 +277,81 @@ class RegionConfig:
277277
)
278278

279279

280+
# =============================================================================
281+
# EU Region Configuration
282+
# =============================================================================
283+
EU_REGION_CONFIG = RegionConfig(
284+
region_id="eu",
285+
supports_futures=False,
286+
supports_crypto=False,
287+
supports_event_contracts=False,
288+
supports_combo_orders=False,
289+
supports_option_strategies=False,
290+
supports_algo_orders=False,
291+
valid_order_types=frozenset({
292+
"MARKET", "LIMIT", "STOP_LOSS", "STOP_LOSS_LIMIT"
293+
}),
294+
valid_time_in_force=frozenset({"DAY", "GTC"}),
295+
valid_trading_sessions=frozenset({"NIGHT", "ALL", "CORE", "ALL_DAY"}),
296+
valid_combo_types=frozenset({"NORMAL"}),
297+
valid_option_strategies=frozenset({"SINGLE"}),
298+
valid_market_categories=frozenset({"US"}),
299+
valid_order_markets=frozenset({"US"}),
300+
valid_instrument_categories=frozenset({"US_STOCK", "US_ETF"}),
301+
supports_options=False,
302+
)
303+
304+
305+
# =============================================================================
306+
# ZA Region Configuration
307+
# =============================================================================
308+
ZA_REGION_CONFIG = RegionConfig(
309+
region_id="za",
310+
supports_futures=False,
311+
supports_crypto=False,
312+
supports_event_contracts=False,
313+
supports_combo_orders=False,
314+
supports_option_strategies=False,
315+
supports_algo_orders=False,
316+
valid_order_types=frozenset({
317+
"MARKET", "LIMIT", "STOP_LOSS", "STOP_LOSS_LIMIT"
318+
}),
319+
valid_time_in_force=frozenset({"DAY", "GTC"}),
320+
valid_trading_sessions=frozenset({"NIGHT", "ALL", "CORE", "ALL_DAY"}),
321+
valid_combo_types=frozenset({"NORMAL"}),
322+
valid_option_strategies=frozenset({"SINGLE"}),
323+
valid_market_categories=frozenset({"US"}),
324+
valid_order_markets=frozenset({"US"}),
325+
valid_instrument_categories=frozenset({"US_STOCK", "US_ETF"}),
326+
supports_options=False,
327+
)
328+
329+
330+
# =============================================================================
331+
# AU Region Configuration
332+
# =============================================================================
333+
AU_REGION_CONFIG = RegionConfig(
334+
region_id="au",
335+
supports_futures=False,
336+
supports_crypto=False,
337+
supports_event_contracts=False,
338+
supports_combo_orders=False,
339+
supports_option_strategies=False,
340+
supports_algo_orders=False,
341+
valid_order_types=frozenset({
342+
"MARKET", "LIMIT", "STOP_LOSS", "STOP_LOSS_LIMIT"
343+
}),
344+
valid_time_in_force=frozenset({"DAY", "GTC"}),
345+
valid_trading_sessions=frozenset({"NIGHT", "ALL", "CORE", "ALL_DAY"}),
346+
valid_combo_types=frozenset({"NORMAL"}),
347+
valid_option_strategies=frozenset({"SINGLE"}),
348+
valid_market_categories=frozenset({"US"}),
349+
valid_order_markets=frozenset({"US"}),
350+
valid_instrument_categories=frozenset({"US_STOCK", "US_ETF"}),
351+
supports_options=False,
352+
)
353+
354+
280355
# =============================================================================
281356
# Region Configuration Registry
282357
# =============================================================================
@@ -290,6 +365,9 @@ class RegionConfig:
290365
"uk": UK_REGION_CONFIG,
291366
"mx": MX_REGION_CONFIG,
292367
"br": BR_REGION_CONFIG,
368+
"eu": EU_REGION_CONFIG,
369+
"za": ZA_REGION_CONFIG,
370+
"au": AU_REGION_CONFIG,
293371
}
294372

295373
SUPPORTED_REGIONS: frozenset[str] = frozenset(REGION_CONFIGS.keys())

‎webull_openapi_mcp/sdk_client.py‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
# Region-specific 2FA documentation links
2020
_2FA_GUIDE_LINKS: dict[str, str] = {
21+
"au": "https://developer.webull.com.au/apis/docs/authentication/token",
2122
"br": "https://developer.webull.com.br/apis/docs/authentication/token",
23+
"eu": "https://developer.webull.eu/apis/docs/authentication/token",
2224
"hk": "https://developer.webull.hk/apis/docs/authentication/token",
2325
"jp": "https://developer.webull.co.jp/apis/docs/authentication/token",
2426
"mx": "https://developer.webull.com.mx/apis/docs/authentication/token",
@@ -27,6 +29,7 @@
2729
"th": "https://developer.webull.co.th/apis/docs/authentication/token",
2830
"uk": "https://developer.webull-uk.com/apis/docs/authentication/token",
2931
"us": "https://developer.webull.com/apis/docs/authentication/token",
32+
"za": "https://developer.webull.co.za/apis/docs/authentication/token",
3033
}
3134

3235

@@ -138,7 +141,7 @@ def __init__(self, region_id: str, environment: str) -> None:
138141
# based on each request's api_type - no add_endpoint() calls needed.
139142
UAT_ENDPOINTS: dict = {
140143
"default_region": "us",
141-
"regions": ["us", "hk", "jp", "sg", "th", "my", "uk", "mx", "br"],
144+
"regions": ["us", "hk", "jp", "sg", "th", "my", "uk", "mx", "br", "eu", "za", "au"],
142145
"region_mapping": {
143146
"us": {
144147
"api": "us-openapi-alb.uat.webullbroker.com",
@@ -185,6 +188,21 @@ def __init__(self, region_id: str, environment: str) -> None:
185188
"quotes-api": "us-openapi-quotes-api.uat.webullbroker.com",
186189
"events-api": "us-openapi-events.uat.webullbroker.com",
187190
},
191+
"eu": {
192+
"api": "eu-api.uat.webullbroker.com",
193+
"quotes-api": "eu-api.uat.webullbroker.com",
194+
"events-api": "eu-events-api.uat.webullbroker.com",
195+
},
196+
"za": {
197+
"api": "au-api.uat.webullbroker.com",
198+
"quotes-api": "au-api.uat.webullbroker.com",
199+
"events-api": "au-events-api.uat.webullbroker.com",
200+
},
201+
"au": {
202+
"api": "au-api.uat.webullbroker.com",
203+
"quotes-api": "au-api.uat.webullbroker.com",
204+
"events-api": "au-events-api.uat.webullbroker.com",
205+
},
188206
},
189207
}
190208

0 commit comments

Comments
 (0)