diff --git a/artifacts/apidocs/schemas/api_drop_client_ws_request.md b/artifacts/apidocs/schemas/api_drop_client_ws_request.md
new file mode 100644
index 0000000..4fdfe35
--- /dev/null
+++ b/artifacts/apidocs/schemas/api_drop_client_ws_request.md
@@ -0,0 +1,4 @@
+!!! info "[ApiDropClientWsRequest](/../../schemas/api_drop_client_ws_request)"
+ |Name
`Lite`|Type|Required
`Default`| Description |
+ |-|-|-|-|
+ |main_account_id
`ma` |string|True||
diff --git a/artifacts/apidocs/schemas/api_drop_client_ws_response.md b/artifacts/apidocs/schemas/api_drop_client_ws_response.md
new file mode 100644
index 0000000..8e7b4b5
--- /dev/null
+++ b/artifacts/apidocs/schemas/api_drop_client_ws_response.md
@@ -0,0 +1,4 @@
+!!! info "[ApiDropClientWsResponse](/../../schemas/api_drop_client_ws_response)"
+ |Name
`Lite`|Type|Required
`Default`| Description |
+ |-|-|-|-|
+ |num_dropped
`nd` |integer|True||
diff --git a/artifacts/apidocs/schemas/api_get_ecosystem_leaderboard_response.md b/artifacts/apidocs/schemas/api_get_ecosystem_leaderboard_response.md
index 670d5f9..32f12c8 100644
--- a/artifacts/apidocs/schemas/api_get_ecosystem_leaderboard_response.md
+++ b/artifacts/apidocs/schemas/api_get_ecosystem_leaderboard_response.md
@@ -20,3 +20,6 @@
|rank
`r` |integer|True|The rank of the account in the ecosystem|
|epoch
`e` |integer|True|The epoch number of the ecosystem point|
|brokered_trading_volume
`bt` |string|True|Brokered trading volume|
+ |brokered_trading_point
`bt1` |string|True|Brokered trading point|
+ |referee_kyc_point
`rk` |string|True|Referee KYC point|
+ |referrer_kyc_point
`rk1` |string|True|Referrer KYC point|
diff --git a/artifacts/apidocs/schemas/api_get_list_flat_referral_response.md b/artifacts/apidocs/schemas/api_get_list_flat_referral_response.md
index 01d3d78..a8a914d 100644
--- a/artifacts/apidocs/schemas/api_get_list_flat_referral_response.md
+++ b/artifacts/apidocs/schemas/api_get_list_flat_referral_response.md
@@ -17,3 +17,4 @@
|is_kyc_completed
`ik` |boolean|True|The account is KYC verified or not|
|kyc_completed_at
`kc` |string|True|The KYC completed time|
|kyc_type
`kt` |string|True|The KYC type, can be 'individual' or 'business'|
+ |kyc_first_completed_at
`kf` |string|True|The first KYC completed time|
diff --git a/artifacts/apidocs/schemas/api_get_user_ecosystem_point_response.md b/artifacts/apidocs/schemas/api_get_user_ecosystem_point_response.md
index 7261f56..69dc27e 100644
--- a/artifacts/apidocs/schemas/api_get_user_ecosystem_point_response.md
+++ b/artifacts/apidocs/schemas/api_get_user_ecosystem_point_response.md
@@ -20,3 +20,6 @@
|rank
`r` |integer|True|The rank of the account in the ecosystem|
|epoch
`e` |integer|True|The epoch number of the ecosystem point|
|brokered_trading_volume
`bt` |string|True|Brokered trading volume|
+ |brokered_trading_point
`bt1` |string|True|Brokered trading point|
+ |referee_kyc_point
`rk` |string|True|Referee KYC point|
+ |referrer_kyc_point
`rk1` |string|True|Referrer KYC point|
diff --git a/artifacts/apidocs/schemas/ecosystem_point.md b/artifacts/apidocs/schemas/ecosystem_point.md
index f8573eb..318f5f9 100644
--- a/artifacts/apidocs/schemas/ecosystem_point.md
+++ b/artifacts/apidocs/schemas/ecosystem_point.md
@@ -16,3 +16,6 @@
|rank
`r` |integer|True|The rank of the account in the ecosystem|
|epoch
`e` |integer|True|The epoch number of the ecosystem point|
|brokered_trading_volume
`bt` |string|True|Brokered trading volume|
+ |brokered_trading_point
`bt1` |string|True|Brokered trading point|
+ |referee_kyc_point
`rk` |string|True|Referee KYC point|
+ |referrer_kyc_point
`rk1` |string|True|Referrer KYC point|
diff --git a/artifacts/apidocs/schemas/flat_referral.md b/artifacts/apidocs/schemas/flat_referral.md
index 9e17431..e6fde20 100644
--- a/artifacts/apidocs/schemas/flat_referral.md
+++ b/artifacts/apidocs/schemas/flat_referral.md
@@ -13,3 +13,4 @@
|is_kyc_completed
`ik` |boolean|True|The account is KYC verified or not|
|kyc_completed_at
`kc` |string|True|The KYC completed time|
|kyc_type
`kt` |string|True|The KYC type, can be 'individual' or 'business'|
+ |kyc_first_completed_at
`kf` |string|True|The first KYC completed time|
diff --git a/artifacts/apidocs/schemas/ws_cancel_feed_data_v1.md b/artifacts/apidocs/schemas/ws_cancel_feed_data_v1.md
index fb5a7d4..2924a18 100644
--- a/artifacts/apidocs/schemas/ws_cancel_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_cancel_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |CancelStatusFeed|True|Data relating to the status of the cancellation attempt|
??? info "[CancelStatusFeed](/../../schemas/cancel_status_feed)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_candlestick_feed_data_v1.md b/artifacts/apidocs/schemas/ws_candlestick_feed_data_v1.md
index 253e439..72d1fd2 100644
--- a/artifacts/apidocs/schemas/ws_candlestick_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_candlestick_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Candlestick|True|A candlestick entry matching the request filters|
??? info "[Candlestick](/../../schemas/candlestick)"
diff --git a/artifacts/apidocs/schemas/ws_deposit_feed_data_v1.md b/artifacts/apidocs/schemas/ws_deposit_feed_data_v1.md
index 6217458..5c36103 100644
--- a/artifacts/apidocs/schemas/ws_deposit_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_deposit_feed_data_v1.md
@@ -5,7 +5,7 @@
|-|-|-|-|
|stream
`s` |string|True|The websocket channel to which the response is sent|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Deposit|True|The Deposit object|
??? info "[Deposit](/../../schemas/deposit)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_fill_feed_data_v1.md b/artifacts/apidocs/schemas/ws_fill_feed_data_v1.md
index 69e7b68..d78ab8c 100644
--- a/artifacts/apidocs/schemas/ws_fill_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_fill_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|The websocket channel to which the response is sent|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Fill|True|A private trade matching the request filter|
??? info "[Fill](/../../schemas/fill)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_mini_ticker_feed_data_v1.md b/artifacts/apidocs/schemas/ws_mini_ticker_feed_data_v1.md
index b04fa9c..5aae76f 100644
--- a/artifacts/apidocs/schemas/ws_mini_ticker_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_mini_ticker_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |MiniTicker|True|A mini ticker matching the request filter|
??? info "[MiniTicker](/../../schemas/mini_ticker)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_order_feed_data_v1.md b/artifacts/apidocs/schemas/ws_order_feed_data_v1.md
index 758591d..3b6b539 100644
--- a/artifacts/apidocs/schemas/ws_order_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_order_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Order|True|The order object being created or updated|
??? info "[Order](/../../schemas/order)"
Order is a typed payload used throughout the GRVT platform to express all orderbook, RFQ, and liquidation orders.
GRVT orders are capable of expressing both single-legged, and multi-legged orders by default.
This increases the learning curve slightly but reduces overall integration load, since the order payload is used across all GRVT trading venues.
Given GRVT's trustless settlement model, the Order payload also carries the signature, required to trade the order on our ZKSync Hyperchain.
All fields in the Order payload (except `id`, `metadata`, and `state`) are trustlessly enforced on our Hyperchain.
This minimizes the amount of trust users have to offer to GRVT
diff --git a/artifacts/apidocs/schemas/ws_order_group_feed_data_v1.md b/artifacts/apidocs/schemas/ws_order_group_feed_data_v1.md
index 447a395..469e03f 100644
--- a/artifacts/apidocs/schemas/ws_order_group_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_order_group_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |ClientOrderIDsByGroup|True|The order object being created or updated|
??? info "[ClientOrderIDsByGroup](/../../schemas/client_order_i_ds_by_group)"
Grouping for the client order id and their associated groups.
This is used to define TP/SL pairs or other order groupings after loading the list of Open Orders.
diff --git a/artifacts/apidocs/schemas/ws_order_state_feed_data_v1.md b/artifacts/apidocs/schemas/ws_order_state_feed_data_v1.md
index c2165cf..e371c6c 100644
--- a/artifacts/apidocs/schemas/ws_order_state_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_order_state_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |OrderStateFeed|True|The Order State Feed|
??? info "[OrderStateFeed](/../../schemas/order_state_feed)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_orderbook_levels_feed_data_v1.md b/artifacts/apidocs/schemas/ws_orderbook_levels_feed_data_v1.md
index 74587a0..e37a0ed 100644
--- a/artifacts/apidocs/schemas/ws_orderbook_levels_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_orderbook_levels_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |OrderbookLevels|True|An orderbook levels object matching the request filter|
??? info "[OrderbookLevels](/../../schemas/orderbook_levels)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_positions_feed_data_v1.md b/artifacts/apidocs/schemas/ws_positions_feed_data_v1.md
index a090b94..c4cbcda 100644
--- a/artifacts/apidocs/schemas/ws_positions_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_positions_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Positions|True|A Position being created or updated matching the request filter|
??? info "[Positions](/../../schemas/positions)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_subscribe_params.md b/artifacts/apidocs/schemas/ws_subscribe_params.md
index 7c9c059..896bfaa 100644
--- a/artifacts/apidocs/schemas/ws_subscribe_params.md
+++ b/artifacts/apidocs/schemas/ws_subscribe_params.md
@@ -1,5 +1,5 @@
!!! info "[WSSubscribeParams](/../../schemas/ws_subscribe_params)"
- All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream, and a list of feeds to subscribe to.
When subscribing to the same primary selector again, the previous secondary selector will be replaced. See `Overview` page for more details.
+ All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream and a list of feeds to subscribe to.
When subscribing to the same primary selector again, the previous secondary selector will be replaced. See `Overview` page for more details.
Sequence numbers can be either gateway-specific or global:
- **Gateway Unique Sequence Number**: Increments by one per stream, resets to 0 on gateway restart.
- **Global Unique Sequence Number**: A cluster-wide unique number assigned to each cluster payload, does not reset on gateway restarts, and can be used to track and identify message order across streams using `sequence_number` and `prev_sequence_number` in the feed response.
Set `useGlobalSequenceNumber = true` if you need a persistent, unique identifier across all streams or ordering across multiple feeds.
|Name
`Lite`|Type|Required
`Default`| Description |
|-|-|-|-|
diff --git a/artifacts/apidocs/schemas/ws_ticker_feed_data_v1.md b/artifacts/apidocs/schemas/ws_ticker_feed_data_v1.md
index b821c89..e9dacdc 100644
--- a/artifacts/apidocs/schemas/ws_ticker_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_ticker_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Ticker|True|A ticker matching the request filter|
??? info "[Ticker](/../../schemas/ticker)"
Derived data such as the below, will not be included by default:
- 24 hour volume (`buyVolume + sellVolume`)
- 24 hour taker buy/sell ratio (`buyVolume / sellVolume`)
- 24 hour average trade price (`volumeQ / volumeU`)
- 24 hour average trade volume (`volume / trades`)
- 24 hour percentage change (`24hStatChange / 24hStat`)
- 48 hour statistics (`2 * 24hStat - 24hStatChange`)
To query for an extended ticker payload, leverage the `greeks` and the `derived` flags.
Ticker extensions are currently under design to offer you more convenience.
These flags are only supported on the `Ticker Snapshot` WS endpoint, and on the `Ticker` API endpoint.
diff --git a/artifacts/apidocs/schemas/ws_trade_feed_data_v1.md b/artifacts/apidocs/schemas/ws_trade_feed_data_v1.md
index a2e0ce6..8328e51 100644
--- a/artifacts/apidocs/schemas/ws_trade_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_trade_feed_data_v1.md
@@ -3,7 +3,7 @@
|-|-|-|-|
|stream
`s` |string|True|Stream name|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Trade|True|A public trade matching the request filter|
??? info "[Trade](/../../schemas/trade)"
All private RFQs and Private AXEs will be filtered out from the responses
diff --git a/artifacts/apidocs/schemas/ws_transfer_feed_data_v1.md b/artifacts/apidocs/schemas/ws_transfer_feed_data_v1.md
index b1f56f0..2553e8c 100644
--- a/artifacts/apidocs/schemas/ws_transfer_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_transfer_feed_data_v1.md
@@ -5,7 +5,7 @@
|-|-|-|-|
|stream
`s` |string|True|The websocket channel to which the response is sent|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |TransferHistory|True|The transfer history matching the requested filters|
??? info "[TransferHistory](/../../schemas/transfer_history)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/schemas/ws_unsubscribe_params.md b/artifacts/apidocs/schemas/ws_unsubscribe_params.md
index 7fcaa6b..5914171 100644
--- a/artifacts/apidocs/schemas/ws_unsubscribe_params.md
+++ b/artifacts/apidocs/schemas/ws_unsubscribe_params.md
@@ -1,5 +1,5 @@
!!! info "[WSUnsubscribeParams](/../../schemas/ws_unsubscribe_params)"
- All V1 Websocket Unsubscription Requests are housed in this wrapper. You may specify a stream, and a list of feeds to unsubscribe from.
+ All V1 Websocket Unsubscription Requests are housed in this wrapper. You may specify a stream, a list of feeds and whether those feeds use global sequence numbers to unsubscribe from.
|Name
`Lite`|Type|Required
`Default`| Description |
|-|-|-|-|
diff --git a/artifacts/apidocs/schemas/ws_withdrawal_feed_data_v1.md b/artifacts/apidocs/schemas/ws_withdrawal_feed_data_v1.md
index 373591c..4161a8a 100644
--- a/artifacts/apidocs/schemas/ws_withdrawal_feed_data_v1.md
+++ b/artifacts/apidocs/schemas/ws_withdrawal_feed_data_v1.md
@@ -5,7 +5,7 @@
|-|-|-|-|
|stream
`s` |string|True|The websocket channel to which the response is sent|
|selector
`s1` |string|True|Primary selector|
- |sequence_number
`sn` |string|True|A running sequence number that determines global message order within the specific stream|
+ |sequence_number
`sn` |string|True|A sequence number used to determine message order within a stream.
- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
- A single cluster payload can be multiplexed into multiple stream payloads.
- To distinguish each stream payload, a `dedupCounter` is included.
- The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.|
|feed
`f` |Withdrawal|True|The Withdrawal object|
??? info "[Withdrawal](/../../schemas/withdrawal)"
|Name
`Lite`|Type|Required
`Default`| Description |
diff --git a/artifacts/apidocs/trading_api.md b/artifacts/apidocs/trading_api.md
index bcaf21c..69a97c4 100644
--- a/artifacts/apidocs/trading_api.md
+++ b/artifacts/apidocs/trading_api.md
@@ -1,6 +1,315 @@
# Trading APIs
All requests should be made using the `POST` HTTP method.
+## Admin
+### Drop Client
+```
+FULL ENDPOINT: full/v1/drop_client_ws
+LITE ENDPOINT: lite/v1/drop_client_ws
+```
+
+=== "Request"
+
+ -8<- "docs/schemas/api_drop_client_ws_request.md"
+
+
+ !!! question "Query"
+ **Full Request**
+ ``` { .json .copy }
+ {
+ "main_account_id": null
+ }
+ ```
+ **Lite Request**
+ ``` { .json .copy }
+ {
+ "ma": null
+ }
+ ```
+
+=== "Response"
+
+ -8<- "docs/schemas/api_drop_client_ws_response.md"
+
+
+ !!! success
+ **Full Response**
+ ``` { .json .copy }
+ {
+ "num_dropped": null
+ }
+ ```
+ **Lite Response**
+ ``` { .json .copy }
+ {
+ "nd": null
+ }
+ ```
+
+=== "Errors"
+
+ !!! info "Error Codes"
+ |Code|HttpStatus| Description |
+ |-|-|-|
+ |1000|401|You need to authenticate prior to using this functionality|
+ |1001|403|You are not authorized to access this functionality|
+ |1002|500|Internal Server Error|
+ |1003|400|Request could not be processed due to malformed syntax|
+ |1006|429|You have surpassed the allocated rate limit for your tier|
+ |1008|401|Your IP has not been whitelisted for access|
+
+
+ !!! failure
+ **Full Error Response**
+ ``` { .json .copy }
+ {
+ "request_id":1,
+ "code":1000,
+ "message":"You need to authenticate prior to using this functionality",
+ "status":401
+ }
+ ```
+ **Lite Error Response**
+ ``` { .json .copy }
+ {
+ "ri":1,
+ "c":1000,
+ "m":"You need to authenticate prior to using this functionality",
+ "s":401
+ }
+ ```
+
+=== "Try it out"
+ -8<- "sections/auth_closed.md"
+ === "DEV"
+
+ !!! example "REST Full"
+ ``` { .bash .copy }
+ curl --location 'https://trades.dev.gravitymarkets.io/full/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "main_account_id": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Full"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.dev.gravitymarkets.io/ws/full" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "jsonrpc": "2.0",
+ "method": "v1/drop_client_ws",
+ "params": {
+ "main_account_id": null
+ },
+ "id": 123
+ }
+ ' -w 360
+ ```
+
+
+ !!! example "REST Lite"
+ ``` { .bash .copy }
+ curl --location 'https://trades.dev.gravitymarkets.io/lite/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "ma": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Lite"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.dev.gravitymarkets.io/ws/lite" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "j": "2.0",
+ "m": "v1/drop_client_ws",
+ "p": {
+ "ma": null
+ },
+ "i": 123
+ }
+ ' -w 360
+ ```
+
+ === "STAGING"
+
+ !!! example "REST Full"
+ ``` { .bash .copy }
+ curl --location 'https://trades.staging.gravitymarkets.io/full/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "main_account_id": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Full"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.staging.gravitymarkets.io/ws/full" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "jsonrpc": "2.0",
+ "method": "v1/drop_client_ws",
+ "params": {
+ "main_account_id": null
+ },
+ "id": 123
+ }
+ ' -w 360
+ ```
+
+
+ !!! example "REST Lite"
+ ``` { .bash .copy }
+ curl --location 'https://trades.staging.gravitymarkets.io/lite/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "ma": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Lite"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.staging.gravitymarkets.io/ws/lite" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "j": "2.0",
+ "m": "v1/drop_client_ws",
+ "p": {
+ "ma": null
+ },
+ "i": 123
+ }
+ ' -w 360
+ ```
+
+ === "TESTNET"
+
+ !!! example "REST Full"
+ ``` { .bash .copy }
+ curl --location 'https://trades.testnet.grvt.io/full/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "main_account_id": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Full"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.testnet.grvt.io/ws/full" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "jsonrpc": "2.0",
+ "method": "v1/drop_client_ws",
+ "params": {
+ "main_account_id": null
+ },
+ "id": 123
+ }
+ ' -w 360
+ ```
+
+
+ !!! example "REST Lite"
+ ``` { .bash .copy }
+ curl --location 'https://trades.testnet.grvt.io/lite/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "ma": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Lite"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.testnet.grvt.io/ws/lite" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "j": "2.0",
+ "m": "v1/drop_client_ws",
+ "p": {
+ "ma": null
+ },
+ "i": 123
+ }
+ ' -w 360
+ ```
+
+ === "PROD"
+
+ !!! example "REST Full"
+ ``` { .bash .copy }
+ curl --location 'https://trades.grvt.io/full/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "main_account_id": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Full"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.grvt.io/ws/full" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "jsonrpc": "2.0",
+ "method": "v1/drop_client_ws",
+ "params": {
+ "main_account_id": null
+ },
+ "id": 123
+ }
+ ' -w 360
+ ```
+
+
+ !!! example "REST Lite"
+ ``` { .bash .copy }
+ curl --location 'https://trades.grvt.io/lite/v1/drop_client_ws' \
+ --header "Cookie: $GRVT_COOKIE" \
+ --header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ --data '{
+ "ma": null
+ }
+ '
+ ```
+ !!! example "JSONRPC Lite"
+ ``` { .bash .copy }
+ wscat -c "wss://trades.grvt.io/ws/lite" \
+ -H "Cookie: $GRVT_COOKIE" \
+ -H "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
+ -x '
+ {
+ "j": "2.0",
+ "m": "v1/drop_client_ws",
+ "p": {
+ "ma": null
+ },
+ "i": 123
+ }
+ ' -w 360
+ ```
+
+
## Order
### Create Order
```
diff --git a/artifacts/pysdk/grvt_raw_async.py b/artifacts/pysdk/grvt_raw_async.py
index c9e3194..f9e2da7 100644
--- a/artifacts/pysdk/grvt_raw_async.py
+++ b/artifacts/pysdk/grvt_raw_async.py
@@ -96,6 +96,14 @@ async def funding_rate_v1(
return GrvtError(**resp)
return from_dict(types.ApiFundingRateResponse, resp, Config(cast=[Enum]))
+ async def drop_client_ws(
+ self, req: types.ApiDropClientWsRequest
+ ) -> types.ApiDropClientWsResponse | GrvtError:
+ resp = await self._post(True, self.td_rpc + "/full/v1/drop_client_ws", req)
+ if resp.get("code"):
+ return GrvtError(**resp)
+ return from_dict(types.ApiDropClientWsResponse, resp, Config(cast=[Enum]))
+
async def create_order_v1(
self, req: types.ApiCreateOrderRequest
) -> types.ApiCreateOrderResponse | GrvtError:
diff --git a/artifacts/pysdk/grvt_raw_sync.py b/artifacts/pysdk/grvt_raw_sync.py
index 60b090d..fa51aa7 100644
--- a/artifacts/pysdk/grvt_raw_sync.py
+++ b/artifacts/pysdk/grvt_raw_sync.py
@@ -94,6 +94,14 @@ def funding_rate_v1(
return GrvtError(**resp)
return from_dict(types.ApiFundingRateResponse, resp, Config(cast=[Enum]))
+ def drop_client_ws(
+ self, req: types.ApiDropClientWsRequest
+ ) -> types.ApiDropClientWsResponse | GrvtError:
+ resp = self._post(True, self.td_rpc + "/full/v1/drop_client_ws", req)
+ if resp.get("code"):
+ return GrvtError(**resp)
+ return from_dict(types.ApiDropClientWsResponse, resp, Config(cast=[Enum]))
+
def create_order_v1(
self, req: types.ApiCreateOrderRequest
) -> types.ApiCreateOrderResponse | GrvtError:
diff --git a/artifacts/pysdk/grvt_raw_types.py b/artifacts/pysdk/grvt_raw_types.py
index 7e12c08..ad63d48 100644
--- a/artifacts/pysdk/grvt_raw_types.py
+++ b/artifacts/pysdk/grvt_raw_types.py
@@ -1303,8 +1303,12 @@ class JSONRPCResponse:
@dataclass
class WSSubscribeParams:
"""
- All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream, and a list of feeds to subscribe to.
+ All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream and a list of feeds to subscribe to.
When subscribing to the same primary selector again, the previous secondary selector will be replaced. See `Overview` page for more details.
+ Sequence numbers can be either gateway-specific or global:
+ - **Gateway Unique Sequence Number**: Increments by one per stream, resets to 0 on gateway restart.
+ - **Global Unique Sequence Number**: A cluster-wide unique number assigned to each cluster payload, does not reset on gateway restarts, and can be used to track and identify message order across streams using `sequence_number` and `prev_sequence_number` in the feed response.
+ Set `useGlobalSequenceNumber = true` if you need a persistent, unique identifier across all streams or ordering across multiple feeds.
"""
# The channel to subscribe to (eg: ticker.s / ticker.d)
@@ -1440,11 +1444,18 @@ class WSOrderbookLevelsFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# An orderbook levels object matching the request filter
feed: OrderbookLevels
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -1475,11 +1486,18 @@ class WSMiniTickerFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A mini ticker matching the request filter
feed: MiniTicker
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -1510,11 +1528,18 @@ class WSTickerFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A ticker matching the request filter
feed: Ticker
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -1538,11 +1563,18 @@ class WSTradeFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A public trade matching the request filter
feed: Trade
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -1567,11 +1599,18 @@ class WSCandlestickFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A candlestick entry matching the request filters
feed: Candlestick
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2149,6 +2188,12 @@ class EcosystemPoint:
epoch: int
# Brokered trading volume
brokered_trading_volume: str
+ # Brokered trading point
+ brokered_trading_point: str
+ # Referee KYC point
+ referee_kyc_point: str
+ # Referrer KYC point
+ referrer_kyc_point: str
@dataclass
@@ -2441,6 +2486,8 @@ class FlatReferral:
kyc_completed_at: str
# The KYC type, can be 'individual' or 'business'
kyc_type: str
+ # The first KYC completed time
+ kyc_first_completed_at: str
@dataclass
@@ -2738,11 +2785,18 @@ class WSOrderFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The order object being created or updated
feed: Order
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2778,11 +2832,18 @@ class WSOrderStateFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The Order State Feed
feed: OrderStateFeed
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2806,11 +2867,18 @@ class WSPositionsFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A Position being created or updated matching the request filter
feed: Positions
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2834,11 +2902,18 @@ class WSFillFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# A private trade matching the request filter
feed: Fill
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2888,11 +2963,18 @@ class WSTransferFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The transfer history matching the requested filters
feed: TransferHistory
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2925,11 +3007,18 @@ class WSDepositFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The Deposit object
feed: Deposit
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2964,11 +3053,18 @@ class WSWithdrawalFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The Withdrawal object
feed: Withdrawal
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -2994,11 +3090,18 @@ class WSCancelFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# Data relating to the status of the cancellation attempt
feed: CancelStatusFeed
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
@@ -3034,14 +3137,31 @@ class WSOrderGroupFeedDataV1:
stream: str
# Primary selector
selector: str
- # A running sequence number that determines global message order within the specific stream
+ """
+ A sequence number used to determine message order within a stream.
+ - If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.
+ - If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.
+ - A single cluster payload can be multiplexed into multiple stream payloads.
+ - To distinguish each stream payload, a `dedupCounter` is included.
+ - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`.
+ """
sequence_number: str
# The order object being created or updated
feed: ClientOrderIDsByGroup
- # The previous sequence number that determines global message order within the specific stream
+ # The previous sequence number that determines the message order
prev_sequence_number: str
+@dataclass
+class ApiDropClientWsRequest:
+ main_account_id: str
+
+
+@dataclass
+class ApiDropClientWsResponse:
+ num_dropped: int
+
+
@dataclass
class ApiWithdrawalRequest:
"""
diff --git a/src/codegen/apispec.json b/src/codegen/apispec.json
index 29232cf..27dcf3f 100644
--- a/src/codegen/apispec.json
+++ b/src/codegen/apispec.json
@@ -701,6 +701,47 @@
}
],
"rpcs": [
+ {
+ "namespace": "Admin",
+ "name": "RPCDropClientWS",
+ "version": 1,
+ "route": "/drop_client_ws",
+ "auth_required": true,
+ "request": "ApiDropClientWsRequest",
+ "response": "ApiDropClientWsResponse",
+ "on_request_errors": [
+ {
+ "code": 1000,
+ "message": "You need to authenticate prior to using this functionality",
+ "status": 401
+ },
+ {
+ "code": 1001,
+ "message": "You are not authorized to access this functionality",
+ "status": 403
+ },
+ {
+ "code": 1002,
+ "message": "Internal Server Error",
+ "status": 500
+ },
+ {
+ "code": 1003,
+ "message": "Request could not be processed due to malformed syntax",
+ "status": 400
+ },
+ {
+ "code": 1006,
+ "message": "You have surpassed the allocated rate limit for your tier",
+ "status": 429
+ },
+ {
+ "code": 1008,
+ "message": "Your IP has not been whitelisted for access",
+ "status": 401
+ }
+ ]
+ },
{
"namespace": "Order",
"name": "RPCCreateOrderV1",
@@ -6895,8 +6936,12 @@
}
],
"comment": [
- "All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream, and a list of feeds to subscribe to.",
- "When subscribing to the same primary selector again, the previous secondary selector will be replaced. See `Overview` page for more details."
+ "All V1 Websocket Subscription Requests are housed in this wrapper. You may specify a stream and a list of feeds to subscribe to.",
+ "When subscribing to the same primary selector again, the previous secondary selector will be replaced. See `Overview` page for more details.",
+ "Sequence numbers can be either gateway-specific or global:",
+ "- **Gateway Unique Sequence Number**: Increments by one per stream, resets to 0 on gateway restart.",
+ "- **Global Unique Sequence Number**: A cluster-wide unique number assigned to each cluster payload, does not reset on gateway restarts, and can be used to track and identify message order across streams using `sequence_number` and `prev_sequence_number` in the feed response.",
+ "Set `useGlobalSequenceNumber = true` if you need a persistent, unique identifier across all streams or ordering across multiple feeds."
]
},
{
@@ -7033,7 +7078,7 @@
}
],
"comment": [
- "All V1 Websocket Unsubscription Requests are housed in this wrapper. You may specify a stream, and a list of feeds to unsubscribe from."
+ "All V1 Websocket Unsubscription Requests are housed in this wrapper. You may specify a stream, a list of feeds and whether those feeds use global sequence numbers to unsubscribe from."
]
},
{
@@ -7358,7 +7403,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -7383,7 +7433,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -7473,7 +7523,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -7498,7 +7553,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -7588,7 +7643,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -7613,7 +7673,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -7715,7 +7775,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -7740,7 +7805,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -7836,7 +7901,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -7861,7 +7931,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -9872,6 +9942,45 @@
"comment": [
"Brokered trading volume"
]
+ },
+ {
+ "name": "brokered_trading_point",
+ "lite_name": "bt1",
+ "semantic_type": "uint64",
+ "json_type": "string",
+ "index": 13,
+ "array_depth": 0,
+ "optional": false,
+ "example": "'1000'",
+ "comment": [
+ "Brokered trading point"
+ ]
+ },
+ {
+ "name": "referee_kyc_point",
+ "lite_name": "rk",
+ "semantic_type": "uint64",
+ "json_type": "string",
+ "index": 14,
+ "array_depth": 0,
+ "optional": false,
+ "example": "'1000'",
+ "comment": [
+ "Referee KYC point"
+ ]
+ },
+ {
+ "name": "referrer_kyc_point",
+ "lite_name": "rk1",
+ "semantic_type": "uint64",
+ "json_type": "string",
+ "index": 15,
+ "array_depth": 0,
+ "optional": false,
+ "example": "'1000'",
+ "comment": [
+ "Referrer KYC point"
+ ]
}
],
"comment": [
@@ -11250,6 +11359,19 @@
"comment": [
"The KYC type, can be 'individual' or 'business'"
]
+ },
+ {
+ "name": "kyc_first_completed_at",
+ "lite_name": "kf",
+ "semantic_type": "timestamp",
+ "json_type": "string",
+ "index": 10,
+ "array_depth": 0,
+ "optional": false,
+ "example": "'1697788800000000000'",
+ "comment": [
+ "The first KYC completed time"
+ ]
}
],
"comment": [
@@ -12628,7 +12750,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -12653,7 +12780,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -12786,7 +12913,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -12811,7 +12943,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -12897,7 +13029,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -12922,7 +13059,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13008,7 +13145,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13033,7 +13175,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13266,7 +13408,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13291,7 +13438,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13422,7 +13569,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13447,7 +13599,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13590,7 +13742,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13615,7 +13772,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13747,7 +13904,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13772,7 +13934,7 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
@@ -13870,7 +14032,12 @@
"optional": false,
"example": "'872634876'",
"comment": [
- "A running sequence number that determines global message order within the specific stream"
+ "A sequence number used to determine message order within a stream.",
+ "- If `useGlobalSequenceNumber` is **false**, this returns the gateway sequence number, which increments by one locally within each stream and resets on gateway restarts.",
+ "- If `useGlobalSequenceNumber` is **true**, this returns the global sequence number, which uniquely identifies messages across the cluster.",
+ " - A single cluster payload can be multiplexed into multiple stream payloads.",
+ " - To distinguish each stream payload, a `dedupCounter` is included.",
+ " - The returned sequence number is computed as: `cluster_sequence_number * 10^5 + dedupCounter`."
]
},
{
@@ -13895,12 +14062,46 @@
"optional": false,
"example": "'872634875'",
"comment": [
- "The previous sequence number that determines global message order within the specific stream"
+ "The previous sequence number that determines the message order"
]
}
],
"comment": []
},
+ {
+ "name": "ApiDropClientWsRequest",
+ "is_root": true,
+ "fields": [
+ {
+ "name": "main_account_id",
+ "lite_name": "ma",
+ "semantic_type": "address",
+ "json_type": "string",
+ "index": 0,
+ "array_depth": 0,
+ "optional": false,
+ "comment": []
+ }
+ ],
+ "comment": []
+ },
+ {
+ "name": "ApiDropClientWsResponse",
+ "is_root": true,
+ "fields": [
+ {
+ "name": "num_dropped",
+ "lite_name": "nd",
+ "semantic_type": "int32",
+ "json_type": "integer",
+ "index": 0,
+ "array_depth": 0,
+ "optional": false,
+ "comment": []
+ }
+ ],
+ "comment": []
+ },
{
"name": "ApiWithdrawalRequest",
"is_root": true,