API Reference¶
This reference documents the main classes and methods in the Ethereal Python SDK.
Client Classes¶
AsyncRESTClient¶
The primary asynchronous client for interacting with the Ethereal API via REST endpoints. Recommended for all new applications.
from ethereal import AsyncRESTClient
# Create async client (use within async function)
client = await AsyncRESTClient.create({
"base_url": "https://api.etherealtest.net",
"chain_config": {
"rpc_url": "https://rpc.etherealtest.net",
"private_key": "your_private_key", # optional, required for signing
}
})
# Use the client
products = await client.products()
subaccounts = await client.subaccounts()
# Remember to close when done
await client.close()
ethereal.async_rest_client.AsyncRESTClient
¶
Bases: AsyncHTTPClient
Asynchronous REST client for the Ethereal API.
Notes for maintainers:
- This client composes endpoint functions from the ethereal.rest.*
modules
by assigning them as attributes on the class (see below). Each function
expects self
to provide get
, post
, and get_validated
from
AsyncHTTPClient and to expose _models
for the active network.
- Network-specific models are accessed via self._models
which is set based
on the configured network. This avoids global mutation and is predictable.
- Use AsyncRESTClient.create(...)
to ensure async initialization (RPC
config, optional chain client) happens before use. Remember to await
client.close()
to release the underlying httpx.AsyncClient
.
- We intentionally avoid “async properties”. For convenience methods that
derive indices (e.g., products by ticker/id), use explicit async methods
like get_products_by_ticker()
or get_products_by_id()
that fetch fresh
data each call to keep behavior lightweight and predictable.
Source code in ethereal/async_rest_client.py
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 |
|
cancel_all_orders(subaccount_id, product_ids=None, **kwargs)
async
¶
Cancel all orders for a given subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
product_ids
|
List[str]
|
Filter cancellation by product IDs. |
None
|
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. |
Returns:
Type | Description |
---|---|
List[CancelOrderResultDto]
|
List[CancelOrderResultDto]: Cancellation results per order id. |
Raises:
Type | Description |
---|---|
ValueError
|
If no orders found to cancel or cancellation fails. |
Source code in ethereal/async_rest_client.py
630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 |
|
cancel_orders(order_ids, sender, subaccount, client_order_ids=[], sign=True, submit=True, **kwargs)
async
¶
Prepares and optionally submits a request to cancel multiple orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_ids
|
List[str]
|
Order UUIDs to cancel. Required. |
required |
sender
|
str
|
Address initiating the cancellation. Required. |
required |
subaccount
|
str
|
Hex-encoded subaccount name. Required. |
required |
client_order_ids
|
List[str]
|
Client-generated IDs to cancel. Defaults to empty list. |
[]
|
sign
|
bool
|
If True, sign the payload immediately. Defaults to True. |
True
|
submit
|
bool
|
If True, submit the request to the API. Defaults to True. |
True
|
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. |
Returns:
Type | Description |
---|---|
Union[List[CancelOrderResultDto], CancelOrderDto]
|
Union[List[CancelOrderResultDto], CancelOrderDto]: Cancellation results per order id or prepared cancel payload. |
Raises:
Type | Description |
---|---|
ValueError
|
If no order IDs or client order IDs provided for cancellation. |
Source code in ethereal/async_rest_client.py
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 |
|
create(config={})
async
classmethod
¶
Factory method to create and asynchronously initialize the client.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Union[Dict[str, Any], RESTConfig]
|
Configuration dictionary or RESTConfig object. Optional fields include: private_key (str, optional): The private key. base_url (str, optional): Base URL for REST requests. Defaults to mainnet. timeout (int, optional): Timeout in seconds for REST requests. verbose (bool, optional): Enables debug logging. Defaults to False. rate_limit_headers (bool, optional): Enables rate limit headers. Defaults to False. chain_config (ChainConfig, optional): Chain configuration for signing transactions. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
AsyncRESTClient |
AsyncRESTClient
|
Fully initialized async client instance. |
Source code in ethereal/async_rest_client.py
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
|
create_order(order_type, quantity, side, price=None, ticker=None, product_id=None, client_order_id=None, sender=None, subaccount=None, time_in_force=None, post_only=None, reduce_only=False, close=None, stop_price=None, stop_type=None, expires_at=None, group_id=None, group_contingency_type=None, sign=True, dry_run=False, submit=True)
async
¶
Create and submit an order.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_type
|
str
|
'LIMIT' or 'MARKET'. Required. |
required |
quantity
|
float
|
Order size. Required. |
required |
side
|
int
|
0 for buy, 1 for sell. Required. |
required |
price
|
float
|
Limit price for LIMIT orders. |
None
|
ticker
|
str
|
Ticker of the product. |
None
|
product_id
|
str
|
UUID of the product. |
None
|
client_order_id
|
str
|
Subaccount-scoped client-generated id (UUID or <=32 alphanumeric). |
None
|
sender
|
str
|
Address placing the order. Defaults to chain address. |
None
|
subaccount
|
str
|
Hex-encoded subaccount name. Defaults to first subaccount. |
None
|
time_in_force
|
str
|
For LIMIT orders (e.g., 'GTC', 'GTD'). Defaults to 'GTC'. |
None
|
post_only
|
bool
|
For LIMIT orders; rejects if crossing. Defaults to False. |
None
|
reduce_only
|
bool
|
If True, order only reduces position. Defaults to False. |
False
|
close
|
bool
|
For MARKET orders; If True, closes the position. |
None
|
stop_price
|
float
|
Stop trigger price. |
None
|
stop_type
|
int
|
Stop type, either 0 (take-profit) or 1 (stop-loss), requires non-zero stopPrice. |
None
|
expires_at
|
int
|
Expiry timestamp for GTD. |
None
|
group_id
|
str
|
Group Id (UUID) for linking orders together in OCO/OTO relationships. |
None
|
group_contingency_type
|
int
|
Contingency type for order groups: 0=OTO (Order-Triggers-Order), 1=OCO (One-Cancels-Other). |
None
|
sign
|
bool
|
If True, sign the payload immediately. Defaults to True. |
True
|
dry_run
|
bool
|
If True, validate without execution. Defaults to False. |
False
|
submit
|
bool
|
If True, submit the order. Defaults to True. |
True
|
Returns:
Type | Description |
---|---|
Union[SubmitOrderCreatedDto, DryRunOrderCreatedDto, SubmitOrderDto]
|
Union[SubmitOrderCreatedDto, DryRunOrderCreatedDto, SubmitOrderDto]: Created order response, dry-run validation result, or prepared order payload. |
Raises:
Type | Description |
---|---|
ValueError
|
If neither product_id nor ticker is provided or if order type is invalid. |
Source code in ethereal/async_rest_client.py
459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 |
|
get_maintenance_margin(subaccount_id, positions=None, products=None, product_ids=None)
async
¶
Calculate the an account's maintenance margin for specified positions or products.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
Fetch positions for this subaccount when |
required |
positions
|
Union[List[PositionDto], List[Dict[str, Any]]]
|
Pre-fetched positions to use directly. |
None
|
products
|
Union[List[ProductDto], List[Dict[str, Any]]]
|
Pre-fetched products used to filter the calculation. |
None
|
product_ids
|
List[str]
|
Filters the calculation to these product IDs. |
None
|
Returns:
Name | Type | Description |
---|---|---|
Decimal |
Decimal
|
Total maintenance margin for the filtered positions. |
Raises:
Type | Description |
---|---|
ValueError
|
If neither positions nor subaccount context is provided, or if any referenced product cannot be resolved. |
Source code in ethereal/async_rest_client.py
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 |
|
get_tokens()
async
¶
Return the latest list of tokens (no caching).
Source code in ethereal/async_rest_client.py
455 456 457 |
|
products(refresh=False)
async
¶
Get the list of products.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
refresh
|
bool
|
If True, bypass cache and fetch fresh data. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
List[ProductDto]
|
List[ProductDto]: List of product objects. |
Source code in ethereal/async_rest_client.py
308 309 310 311 312 313 314 315 316 317 318 319 |
|
products_by_id(refresh=False)
async
¶
Get the products indexed by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
refresh
|
bool
|
If True, bypass cache and fetch fresh data. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
Dict[str, ProductDto]
|
Dict[str, ProductDto]: Dictionary of products keyed by ID. |
Source code in ethereal/async_rest_client.py
350 351 352 353 354 355 356 357 358 359 360 361 362 |
|
products_by_ticker(refresh=False)
async
¶
Get the products indexed by ticker.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
refresh
|
bool
|
If True, bypass cache and fetch fresh data. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
Dict[str, ProductDto]
|
Dict[str, ProductDto]: Dictionary of products keyed by ticker. |
Source code in ethereal/async_rest_client.py
334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 |
|
replace_order(order=None, order_id=None, quantity=None, price=None, time_in_force=None, post_only=None, reduce_only=False)
async
¶
Replace an existing order with new parameters.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order
|
OrderDto
|
Existing order object to replace. |
None
|
order_id
|
str
|
UUID of the order to replace. |
None
|
quantity
|
float
|
New order size. |
None
|
price
|
float
|
New limit price. |
None
|
time_in_force
|
str
|
New time in force. |
None
|
post_only
|
bool
|
New post-only flag. |
None
|
reduce_only
|
bool
|
New reduce-only flag. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
Tuple[SubmitOrderCreatedDto, bool]
|
Tuple[SubmitOrderCreatedDto, bool]: Created order response and success flag. |
Raises:
Type | Description |
---|---|
ValueError
|
If neither order nor order_id is provided, or both are provided. |
Source code in ethereal/async_rest_client.py
682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 |
|
subaccounts(refresh=False)
async
¶
Get the list of subaccounts.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
refresh
|
bool
|
If True, bypass cache and fetch fresh data. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
List[SubaccountDto]
|
List[SubaccountDto]: List of subaccount objects for the connected wallet address. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client is configured or address is unavailable. |
Source code in ethereal/async_rest_client.py
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 |
|
tokens(refresh=False)
async
¶
Get the list of tokens.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
refresh
|
bool
|
If True, bypass cache and fetch fresh data. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
List[TokenDto]
|
List[TokenDto]: List of token objects. |
Source code in ethereal/async_rest_client.py
321 322 323 324 325 326 327 328 329 330 331 332 |
|
RESTClient¶
Synchronous wrapper around AsyncRESTClient for backward compatibility. Use AsyncRESTClient for new applications.
from ethereal import RESTClient
client = RESTClient({
"base_url": "https://api.etherealtest.net",
"chain_config": {
"rpc_url": "https://rpc.etherealtest.net",
"private_key": "your_private_key", # optional
}
})
# Property access works for convenience
products = client.products
subaccounts = client.subaccounts
# Remember to close when done
client.close()
ethereal.rest.rpc
¶
get_rpc_config(self, **kwargs)
async
¶
Gets RPC configuration for EIP-712 signing and contract info.
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
RpcConfigDto |
RpcConfigDto
|
Domain and signature type definitions for signing. |
Source code in ethereal/rest/rpc.py
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
ethereal.rest.subaccount
¶
get_subaccount(self, id, **kwargs)
async
¶
Gets a specific subaccount by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
SubaccountDto |
SubaccountDto
|
Subaccount details. |
Source code in ethereal/rest/subaccount.py
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
get_subaccount_balance_history(self, **kwargs)
async
¶
Gets historical subaccount balances from the archive API.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
start_time |
float
|
Range start time in milliseconds since Unix epoch. Required. |
end_time |
float
|
Range end time in milliseconds since Unix epoch. Optional. |
resolution |
str
|
Data resolution (e.g., 'hour1', 'day1'). Required. |
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (defaults to 'time'). Optional. |
**kwargs |
Additional query parameters supported by the API. |
Returns:
Type | Description |
---|---|
List[BalanceHistoryDto]
|
List[BalanceHistoryDto]: Historical balance records ordered per request parameters. |
Source code in ethereal/rest/subaccount.py
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
get_subaccount_balances(self, **kwargs)
async
¶
Gets token balances for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[SubaccountBalanceDto]
|
List[SubaccountBalanceDto]: Balances for the subaccount. |
Source code in ethereal/rest/subaccount.py
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
|
get_subaccount_unrealized_pnl_history(self, **kwargs)
async
¶
Gets historical unrealized PnL for a subaccount from the archive API.
Source code in ethereal/rest/subaccount.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
|
get_subaccount_volume_history(self, **kwargs)
async
¶
Gets historical trading volume for a subaccount from the archive API.
Source code in ethereal/rest/subaccount.py
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
|
list_subaccounts(self, **kwargs)
async
¶
Lists subaccounts for a given sender (address).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sender
|
str
|
Wallet address to query subaccounts for. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[SubaccountDto]
|
List[SubaccountDto]: Subaccount records for the sender. |
Source code in ethereal/rest/subaccount.py
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
ethereal.rest.product
¶
get_market_liquidity(self, **kwargs)
async
¶
Gets market liquidity for a product.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
product_id
|
str
|
Id representing the registered product. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
MarketLiquidityDto |
MarketLiquidityDto
|
Top-of-book and depth liquidity metrics. |
Source code in ethereal/rest/product.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
list_market_prices(self, **kwargs)
async
¶
Gets market prices for one or more products.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
product_ids
|
List[str]
|
List of product IDs to query. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[MarketPriceDto]
|
List[MarketPriceDto]: Best bid/ask prices for the requested products. |
Source code in ethereal/rest/product.py
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
|
list_products(self, **kwargs)
async
¶
Lists all products and their configurations.
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
ticker |
str
|
Filter by product ticker (e.g., 'ETHUSD'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[ProductDto]
|
List[ProductDto]: Product configuration records. |
Source code in ethereal/rest/product.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
ethereal.rest.position
¶
get_position(self, id, **kwargs)
async
¶
Gets a specific position by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
id
|
str
|
UUID of the position. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
PositionDto |
PositionDto
|
Position information for the specified ID. |
Source code in ethereal/rest/position.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
list_positions(self, **kwargs)
async
¶
Lists positions for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
product_ids |
List[str]
|
UUIDs of products to filter by. Optional. |
open |
bool
|
Filter for open positions. Optional. |
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by, e.g., 'size', 'createdAt', or 'updatedAt'. Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[PositionDto]
|
List[PositionDto]: List of position information for the subaccount. |
Source code in ethereal/rest/position.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
ethereal.rest.order
¶
cancel_order(self, order_to_cancel, **kwargs)
async
¶
Submits a prepared and signed cancel order request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_to_cancel
|
CancelOrderDto
|
Prepared and signed cancel payload. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[CancelOrderResultDto]
|
List[CancelOrderResultDto]: Cancellation results per order id. |
Source code in ethereal/rest/order.py
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 |
|
dry_run_order(self, order, **kwargs)
async
¶
Submits a prepared order for validation without execution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order
|
SubmitOrderDto
|
Prepared order payload. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
DryRunOrderCreatedDto |
DryRunOrderCreatedDto
|
Dry-run validation result. |
Source code in ethereal/rest/order.py
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 |
|
get_order(self, id, **kwargs)
async
¶
Gets a specific order by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
id
|
str
|
UUID of the order. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
OrderDto |
OrderDto
|
Order details. |
Source code in ethereal/rest/order.py
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
|
list_fills(self, **kwargs)
async
¶
Lists order fills for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
product_ids |
List[str]
|
Filter by one or more product IDs. Optional. |
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[OrderFillDto]
|
List[OrderFillDto]: Fill records for the subaccount. |
Source code in ethereal/rest/order.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
list_orders(self, **kwargs)
async
¶
Lists orders for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
product_ids |
List[str]
|
Filter by one or more product IDs. Optional. |
client_order_id |
str
|
Filter by a client-generated order id. Optional. |
statuses |
List[str]
|
Filter by status values. Optional. |
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[OrderDto]
|
List[OrderDto]: Order records for the subaccount. |
Source code in ethereal/rest/order.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
list_trades(self, **kwargs)
async
¶
Lists trades for a specific product.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
product_id
|
str
|
Product ID to query trades for. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[TradeDto]
|
List[TradeDto]: Trade records. |
Source code in ethereal/rest/order.py
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
|
prepare_cancel_order(self, sender, subaccount, order_ids=[], client_order_ids=[], include_signature=False, **kwargs)
async
¶
Prepares the payload for canceling one or more orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sender
|
str
|
Address initiating the cancellation. Required. |
required |
subaccount
|
str
|
Hex-encoded subaccount name. Required. |
required |
order_ids
|
List[str]
|
Order UUIDs to cancel. Optional. |
[]
|
client_order_ids
|
List[str]
|
Client-generated IDs to cancel. Optional. |
[]
|
include_signature
|
bool
|
If True, sign the payload immediately. Optional. |
False
|
Other Parameters:
Name | Type | Description |
---|---|---|
nonce |
str
|
Custom nonce for signing. |
**kwargs |
Additional request parameters accepted by the API. |
Returns:
Name | Type | Description |
---|---|---|
CancelOrderDto |
CancelOrderDto
|
Prepared (and optionally signed) cancel payload. |
Source code in ethereal/rest/order.py
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 |
|
prepare_order(self, sender, price=None, quantity=None, side=None, subaccount=None, onchain_id=None, order_type=None, client_order_id=None, time_in_force=None, post_only=False, reduce_only=False, close=None, stop_price=None, stop_type=None, group_id=None, group_contingency_type=None, expires_at=None, include_signature=False, **kwargs)
async
¶
Prepares the payload for an order, optionally including a signature.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sender
|
str
|
Address placing the order. Required. |
required |
price
|
Union[str, float, Decimal]
|
Limit price for LIMIT orders. |
None
|
quantity
|
Union[str, float, Decimal]
|
Order size. |
None
|
side
|
int
|
0 for buy, 1 for sell. |
None
|
subaccount
|
str
|
Hex-encoded subaccount name. |
None
|
onchain_id
|
float
|
Product onchain ID. |
None
|
order_type
|
str
|
'LIMIT' or 'MARKET'. |
None
|
client_order_id
|
str
|
Subaccount-scoped client-generated id (UUID or <=32 alphanumeric). |
None
|
time_in_force
|
str
|
For LIMIT orders (e.g., 'GTC', 'GTD'). |
None
|
post_only
|
bool
|
For LIMIT orders; rejects if crossing. |
False
|
reduce_only
|
bool
|
If True, order only reduces position. |
False
|
close
|
bool
|
If True, closes the position. |
None
|
stop_price
|
Union[str, float, Decimal]
|
Stop trigger price. |
None
|
stop_type
|
int
|
Stop type enum value. |
None
|
group_id
|
str
|
Contingency group id. |
None
|
group_contingency_type
|
int
|
Group contingency type. |
None
|
expires_at
|
int
|
Expiry timestamp for GTD. |
None
|
include_signature
|
bool
|
If True, sign the payload immediately. |
False
|
Other Parameters:
Name | Type | Description |
---|---|---|
nonce |
str
|
Custom nonce for signing. |
signed_at |
int
|
Seconds since epoch for signature timestamp. |
**kwargs |
Additional request parameters accepted by the API. |
Returns:
Name | Type | Description |
---|---|---|
SubmitOrderDto |
SubmitOrderDto
|
Prepared (and optionally signed) order payload. |
Source code in ethereal/rest/order.py
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
|
sign_cancel_order(self, order_to_cancel, private_key=None)
async
¶
Signs a cancel order payload using EIP-712.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_to_cancel
|
CancelOrderDto
|
Prepared cancel payload. Required. |
required |
private_key
|
str
|
Private key override. Defaults to client's key. |
None
|
Returns:
Name | Type | Description |
---|---|---|
CancelOrderDto |
CancelOrderDto
|
The same DTO with signature populated. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client or private key is available. |
Source code in ethereal/rest/order.py
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 |
|
sign_order(self, order, private_key=None)
async
¶
Signs an order payload using EIP-712.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order
|
SubmitOrderDto
|
Prepared order to sign. Required. |
required |
private_key
|
str
|
Private key override. Defaults to client's key. |
None
|
Returns:
Name | Type | Description |
---|---|---|
SubmitOrderDto |
SubmitOrderDto
|
The same DTO with signature populated. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client or private key is available. |
Source code in ethereal/rest/order.py
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 |
|
submit_order(self, order, **kwargs)
async
¶
Submits a prepared and signed order.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order
|
SubmitOrderDto
|
Prepared and signed order payload. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
SubmitOrderCreatedDto |
SubmitOrderCreatedDto
|
Created order response. |
Source code in ethereal/rest/order.py
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
|
ethereal.rest.funding
¶
get_projected_funding(self, **kwargs)
async
¶
Gets the projected funding rate for the next period.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
product_id
|
str
|
Id representing the registered product. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
ProjectedFundingDto |
ProjectedFundingDto
|
Projected funding information for the product. |
Source code in ethereal/rest/funding.py
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
list_funding(self, **kwargs)
async
¶
Lists historical funding rates for a product over a specified time range.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
product_id
|
str
|
Id representing the registered product. Required. |
required |
range
|
str
|
Time window to query. One of 'DAY', 'WEEK', or 'MONTH'. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by, e.g., 'createdAt'. Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[FundingDto]
|
List[FundingDto]: Funding rate history objects for the product. |
Source code in ethereal/rest/funding.py
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
ethereal.rest.linked_signer
¶
get_signer(self, id, **kwargs)
async
¶
Gets a specific linked signer by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
id
|
str
|
UUID of the linked signer. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
SignerDto |
SignerDto
|
Linked signer details. |
Source code in ethereal/rest/linked_signer.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
get_signer_quota(self, **kwargs)
async
¶
Gets the signer quota for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
AccountSignerQuotaDto |
AccountSignerQuotaDto
|
Remaining quota information for the subaccount. |
Source code in ethereal/rest/linked_signer.py
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
|
link_linked_signer(self, dto, **kwargs)
async
¶
Submits a prepared and signed link-signer payload.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
dto
|
LinkSignerDto
|
Prepared and signed link payload. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
SignerDto |
SignerDto
|
Linked signer record after submission. |
Source code in ethereal/rest/linked_signer.py
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
|
list_signers(self, **kwargs)
async
¶
Lists linked signers for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[SignerDto]
|
List[SignerDto]: Linked signer records. |
Source code in ethereal/rest/linked_signer.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
prepare_linked_signer(self, sender, signer, subaccount, subaccount_id, signer_signature='', include_signature=False, **kwargs)
async
¶
Prepares the payload for linking a signer, optionally including a signature.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sender
|
str
|
Owner address initiating the link. Required. |
required |
signer
|
str
|
Address of the signer being linked. Required. |
required |
subaccount
|
str
|
Hex-encoded subaccount name. Required. |
required |
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
signer_signature
|
str
|
Signature from the signer address. Optional. |
''
|
include_signature
|
bool
|
If True, sign with the owner's key as well. Optional. |
False
|
Other Parameters:
Name | Type | Description |
---|---|---|
nonce |
str
|
Custom nonce for signing. Optional. |
signed_at |
int
|
Seconds since epoch for the signature timestamp. Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
LinkSignerDto |
LinkSignerDto
|
Prepared (and optionally signed) link payload. |
Source code in ethereal/rest/linked_signer.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
|
prepare_revoke_linked_signer(self, sender, signer, subaccount, subaccount_id, include_signature=False, **kwargs)
async
¶
Prepares the payload for revoking a linked signer, optionally signing it.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sender
|
str
|
Owner address initiating the revoke. Required. |
required |
signer
|
str
|
Signer address being revoked. Required. |
required |
subaccount
|
str
|
Hex-encoded subaccount name. Required. |
required |
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
include_signature
|
bool
|
If True, sign with the owner's key. Optional. |
False
|
Other Parameters:
Name | Type | Description |
---|---|---|
nonce |
str
|
Custom nonce for signing. Optional. |
signed_at |
int
|
Seconds since epoch for the signature timestamp. Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
RevokeLinkedSignerDto |
RevokeLinkedSignerDto
|
Prepared (and optionally signed) revoke payload. |
Source code in ethereal/rest/linked_signer.py
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
|
revoke_linked_signer(self, dto, **kwargs)
async
¶
Submits a prepared and signed revoke-linked-signer payload.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
dto
|
RevokeLinkedSignerDto
|
Prepared and signed revoke payload. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
SignerDto |
SignerDto
|
Signer record reflecting revocation. |
Source code in ethereal/rest/linked_signer.py
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
|
sign_linked_signer(self, link_to_sign, signer_private_key=None, private_key=None)
async
¶
Signs the link-signer payload with the signer and/or owner key.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
link_to_sign
|
LinkSignerDto
|
Prepared link payload. Required. |
required |
signer_private_key
|
str
|
Signer's private key for cosigning. Optional. |
None
|
private_key
|
str
|
Owner's private key override. Optional. |
None
|
Returns:
Name | Type | Description |
---|---|---|
LinkSignerDto |
LinkSignerDto
|
DTO with signature fields populated. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client or private key is available. |
Source code in ethereal/rest/linked_signer.py
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
|
sign_revoke_linked_signer(self, revoke_to_sign)
async
¶
Signs the revoke-linked-signer payload with the owner's key.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
revoke_to_sign
|
RevokeLinkedSignerDto
|
Prepared revoke payload. Required. |
required |
Returns:
Name | Type | Description |
---|---|---|
RevokeLinkedSignerDto |
RevokeLinkedSignerDto
|
DTO with signature populated. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client or private key is available. |
Source code in ethereal/rest/linked_signer.py
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
|
ethereal.rest.token
¶
get_token(self, id, **kwargs)
async
¶
Gets a specific token by ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
id
|
str
|
UUID for the token. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
TokenDto |
TokenDto
|
Token metadata. |
Source code in ethereal/rest/token.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
list_token_transfers(self, **kwargs)
async
¶
Lists token transfers for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[TransferDto]
|
List[TransferDto]: Transfer records for the subaccount. |
Source code in ethereal/rest/token.py
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
|
list_token_withdraws(self, **kwargs)
async
¶
Lists token withdrawals for a subaccount.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount_id
|
str
|
UUID of the subaccount. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[WithdrawDto]
|
List[WithdrawDto]: Withdrawal records for the subaccount. |
Source code in ethereal/rest/token.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
|
list_tokens(self, **kwargs)
async
¶
Lists all supported tokens.
Other Parameters:
Name | Type | Description |
---|---|---|
order |
str
|
Sort order, 'asc' or 'desc'. Optional. |
limit |
float
|
Maximum number of results to return. Optional. |
cursor |
str
|
Pagination cursor for fetching the next page. Optional. |
order_by |
str
|
Field to order by (e.g., 'createdAt'). Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Type | Description |
---|---|
List[TokenDto]
|
List[TokenDto]: Token metadata. |
Source code in ethereal/rest/token.py
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
prepare_withdraw_token(self, subaccount, token, amount, account, include_signature=False, **kwargs)
async
¶
Prepares a token withdrawal request, optionally including a signature.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subaccount
|
str
|
Hex-encoded subaccount name. Required. |
required |
token
|
str
|
Token contract address or identifier. Required. |
required |
amount
|
int
|
Amount to withdraw (token base units). Required. |
required |
account
|
str
|
Recipient address. Required. |
required |
include_signature
|
bool
|
If True, sign the payload immediately. Optional. |
False
|
Other Parameters:
Name | Type | Description |
---|---|---|
nonce |
str
|
Custom nonce for signing. Optional. |
signed_at |
int
|
Seconds since epoch for the signature timestamp. Optional. |
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
InitiateWithdrawDto |
InitiateWithdrawDto
|
Prepared (and optionally signed) withdrawal payload. |
Source code in ethereal/rest/token.py
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
|
sign_withdraw_token(self, withdraw_dto, private_key=None)
async
¶
Signs the token withdrawal payload using EIP-712.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
withdraw_dto
|
InitiateWithdrawDto
|
Prepared withdrawal payload. Required. |
required |
private_key
|
str
|
Private key override. Defaults to the client's chain key. |
None
|
Returns:
Name | Type | Description |
---|---|---|
InitiateWithdrawDto |
InitiateWithdrawDto
|
The same DTO with signature populated. |
Raises:
Type | Description |
---|---|
ValueError
|
If no chain client or private key is available. |
Source code in ethereal/rest/token.py
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
|
withdraw_token(self, dto, token_id, **kwargs)
async
¶
Submits a prepared and signed token withdrawal request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
dto
|
InitiateWithdrawDto
|
Prepared and signed withdrawal payload. Required. |
required |
token_id
|
str
|
Token ID for the withdraw route parameter. Required. |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
**kwargs |
Additional request parameters accepted by the API. Optional. |
Returns:
Name | Type | Description |
---|---|---|
WithdrawDto |
WithdrawDto
|
Withdrawal record created by the API. |
Source code in ethereal/rest/token.py
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
|
ethereal.rest.util
¶
client_order_id_to_bytes32(client_order_id)
¶
Converts client_order_id to appropriate bytes32 format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
client_order_id
|
str
|
Client order ID to convert. |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
Converted client order ID in bytes32 hex format. |
Raises:
Type | Description |
---|---|
ValueError
|
If string is longer than 32 characters and not a UUID, or if input is None/empty. |
Source code in ethereal/rest/util.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
generate_nonce()
¶
Generates a timestamp-based nonce.
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
Current timestamp in nanoseconds as string. |
Source code in ethereal/rest/util.py
72 73 74 75 76 77 78 |
|
is_uuid(value)
¶
Checks if a string is a valid UUID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
str
|
String to check. |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
bool
|
True if string is a valid UUID, False otherwise. |
Source code in ethereal/rest/util.py
25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
uuid_to_bytes32(uuid_str)
¶
Converts UUID string to bytes32 hex format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
uuid_str
|
str
|
UUID string to convert. |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
Bytes32 hex string prefixed with '0x'. |
Source code in ethereal/rest/util.py
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
ethereal.ws_client.WSClient
¶
Bases: WSBase
Ethereal websocket client.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Union[Dict[str, Any], WSConfig]
|
Configuration dictionary or WSConfig object. Required fields include: - base_url (str): Base URL for websocket requests Optional fields include: - verbose (bool): Enables debug logging, defaults to False |
required |
Source code in ethereal/ws_client.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
subscribe(stream_type, product_id=None, subaccount_id=None, callback=None, namespace='/v1/stream')
¶
Subscribe to a specific stream.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
stream_type
|
str
|
Type of stream to subscribe to |
required |
product_id
|
Optional[str]
|
Product ID to subscribe to |
None
|
subaccount_id
|
Optional[str]
|
Subaccount ID, optional |
None
|
callback
|
Optional[Callable]
|
Callback function to handle incoming messages |
None
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: Subscription response |
Source code in ethereal/ws_client.py
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
unsubscribe(stream_type, product_id=None, subaccount_id=None, namespace='/v1/stream')
¶
Unsubscribe from a specific stream.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
stream_type
|
str
|
Type of stream to unsubscribe from |
required |
product_id
|
str
|
Product ID to unsubscribe from |
None
|
subaccount_id
|
Optional[str]
|
Subaccount ID, optional |
None
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: Unsubscription response |
Source code in ethereal/ws_client.py
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
ethereal.chain_client.ChainClient
¶
Bases: BaseClient
Client for interacting with the blockchain using Web3 functionality.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Union[Dict[str, Any], ChainConfig]
|
Chain configuration |
required |
rpc_config
|
RpcConfigDto
|
RPC configuration. Defaults to None. |
None
|
Raises:
Type | Description |
---|---|
Exception
|
If RPC URL or private key is not specified in the configuration |
Source code in ethereal/chain_client.py
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 |
|
add_gas_fees(tx)
¶
Add gas fee parameters to a transaction.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
tx
|
TxParams
|
The transaction parameters |
required |
Returns:
Name | Type | Description |
---|---|---|
TxParams |
TxParams
|
The transaction parameters with gas fee parameters added |
Source code in ethereal/chain_client.py
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
|
add_gas_limit(tx)
¶
Add gas limit to a transaction.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
tx
|
TxParams
|
The transaction parameters |
required |
Returns:
Name | Type | Description |
---|---|---|
TxParams |
TxParams
|
The transaction parameters with gas limit added |
Source code in ethereal/chain_client.py
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
|
convert_types(type_string)
¶
Converts type string into EIP-712 field format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
type_string
|
str
|
String containing type definitions. |
required |
Returns:
Type | Description |
---|---|
List[Dict[str, str]]
|
List[Dict[str, str]]: List of field definitions. |
Source code in ethereal/chain_client.py
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
|
deposit_usde(amount, address=None, submit=False, account_name='primary')
¶
Submit a deposit transaction.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
amount
|
float
|
The amount to deposit |
required |
address
|
str
|
The address to deposit to. Defaults to None. |
None
|
submit
|
bool
|
Whether to submit the transaction. Defaults to False. |
False
|
account_name
|
str
|
The account name. Defaults to "primary". |
'primary'
|
Returns:
Type | Description |
---|---|
Union[TxParams, str]
|
Union[TxParams, str]: The transaction parameters or transaction hash if submit=True |
Source code in ethereal/chain_client.py
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 |
|
finalize_withdraw(address=None, submit=False, account_name='primary')
¶
Finalize a withdrawal.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address to deposit to. Defaults to None. |
None
|
submit
|
bool
|
Whether to submit the transaction. Defaults to False. |
False
|
account_name
|
str
|
The name of the account. Defaults to "primary". |
'primary'
|
Returns:
Type | Description |
---|---|
Union[TxParams, str]
|
Union[TxParams, str]: The transaction parameters or transaction hash if submit=True |
Source code in ethereal/chain_client.py
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 |
|
get_balance(address)
¶
Get the balance for a given address.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address to get the balance for |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
The balance, or -1 if failed |
Source code in ethereal/chain_client.py
295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
|
get_nonce(address)
¶
Get the nonce for a given address.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address to get the nonce for |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
The nonce, or -1 if failed |
Source code in ethereal/chain_client.py
280 281 282 283 284 285 286 287 288 289 290 291 292 293 |
|
get_signature_types(rpc_config, primary_type)
¶
Gets EIP-712 signature types.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
rpc_config
|
RpcConfigDto
|
RPC configuration. |
required |
primary_type
|
str
|
Primary type for the signature. |
required |
Returns:
Name | Type | Description |
---|---|---|
dict |
Dictionary containing signature type definitions. |
Source code in ethereal/chain_client.py
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
|
get_token_balance(address, token_address)
¶
Get the token balance for a given address.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address to get the token balance for |
required |
token_address
|
str
|
The token address |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
The token balance, or -1 if failed |
Source code in ethereal/chain_client.py
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 |
|
sign_message(private_key, domain, types, primary_type, message)
¶
Sign an EIP-712 typed data message.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
private_key
|
str
|
private key to sign the message with |
required |
domain
|
dict
|
domain parameters including name, version, chainId, and verifyingContract |
required |
types
|
dict
|
type definitions for the structured data |
required |
primary_type
|
str
|
primary type for the signature |
required |
message
|
dict
|
message data to be signed |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
the hexadecimal signature string prefixed with '0x' |
Source code in ethereal/chain_client.py
330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 |
|
submit_tx(tx)
¶
Submit a transaction.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
tx
|
TxParams
|
The transaction parameters |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
The transaction hash |
Source code in ethereal/chain_client.py
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 |
|
ethereal.rest.http_client.HTTPClient
¶
Bases: BaseClient
HTTP client for making API requests.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Union[Dict[str, Any], HTTPConfig]
|
Client configuration. |
required |
Source code in ethereal/rest/http_client.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 |
|
delete(url_path, params=None, data=None, **kwargs)
¶
Sends a DELETE request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Optional. |
None
|
data
|
dict
|
The request body. Optional. |
None
|
**kwargs
|
Additional arguments to pass to the request. Optional. |
{}
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: The response data. |
Source code in ethereal/rest/http_client.py
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
|
get(url_path, params=None, **kwargs)
¶
Sends a GET request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Optional. |
None
|
**kwargs
|
Additional arguments to pass to the request. Optional. |
{}
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: The response data. |
Source code in ethereal/rest/http_client.py
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
|
get_validated(url_path, request_model, response_model, **kwargs)
¶
Sends a GET request including type validation of both the input and output from provided models.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_path
|
str
|
The URL path. Required. |
required |
request_model
|
Type[BaseModel]
|
Pydantic model for request validation. Required. |
required |
response_model
|
Type[BaseModel]
|
Pydantic model for response validation. Required. |
required |
**kwargs
|
Includes all arguments to pass to the request. Optional. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
BaseModel |
BaseModel
|
The response data, validated against the response_model. |
Source code in ethereal/rest/http_client.py
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
|
post(url_path, params=None, data=None, **kwargs)
¶
Sends a POST request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Optional. |
None
|
data
|
dict
|
The request body. Optional. |
None
|
**kwargs
|
Additional arguments to pass to the request. Optional. |
{}
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: The response data. |
Source code in ethereal/rest/http_client.py
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
|
prepare_and_send_request(http_method, url_path, params=None, data=None)
¶
Prepares and sends an HTTP request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
http_method
|
str
|
The HTTP method. Required. |
required |
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Optional. |
None
|
data
|
dict
|
The request body. Optional. |
None
|
Returns:
Type | Description |
---|---|
Dict[str, Any]: The response data. |
Source code in ethereal/rest/http_client.py
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
put(url_path, params=None, data=None, **kwargs)
¶
Sends a PUT request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Optional. |
None
|
data
|
dict
|
The request body. Optional. |
None
|
**kwargs
|
Additional arguments to pass to the request. Optional. |
{}
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: The response data. |
Source code in ethereal/rest/http_client.py
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
|
send_request(http_method, url_path, params, headers, data=None)
¶
Sends an HTTP request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
http_method
|
str
|
The HTTP method. Required. |
required |
url_path
|
str
|
The URL path. Required. |
required |
params
|
dict
|
The query parameters. Required. |
required |
headers
|
dict
|
The request headers. Required. |
required |
data
|
dict
|
The request body. Optional. |
None
|
Returns:
Type | Description |
---|---|
Dict[str, Any]: The response data. |
Raises:
Type | Description |
---|---|
HTTPError
|
If the request fails. |
Source code in ethereal/rest/http_client.py
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
|
set_headers(method, path)
¶
Sets the request headers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
method
|
str
|
The HTTP method. Required. |
required |
path
|
str
|
The URL path. Required. |
required |
Returns:
Name | Type | Description |
---|---|---|
dict |
The request headers. |
Source code in ethereal/rest/http_client.py
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 |
|