5.8 KiB
!!! info "OrderStateFeed"
|NameLite|Type|RequiredDefault| Description |
|-|-|-|-|
|order_idoi |string|True|A unique 128-bit identifier for the order, deterministically generated within the GRVT backend|
|client_order_idco |string|True|A unique identifier for the active order within a subaccount, specified by the client|
|order_stateos |OrderState|True|The order state object being created or updated|
??? info "OrderState"
|NameLite|Type|RequiredDefault| Description |
|-|-|-|-|
|statuss |OrderStatus|True|The status of the order|
|reject_reasonrr |OrderRejectReason|True|The reason for rejection or cancellation|
|book_sizebs |[string]|True|The number of assets available for orderbook/RFQ matching. Sorted in same order as Order.Legs|
|traded_sizets |[string]|True|The total number of assets traded. Sorted in same order as Order.Legs|
|update_timeut |string|True|Time at which the order was updated by GRVT, expressed in unix nanoseconds|
|avg_fill_priceaf |[string]|True|The average fill price of the order. Sorted in same order as Order.Legs|
??? info "OrderStatus"
|Value| Description |
|-|-|
|PENDING = 1|Order has been sent to the matching engine and is pending a transition to open/filled/rejected.|
|OPEN = 2|Order is actively matching on the matching engine, could be unfilled or partially filled.|
|FILLED = 3|Order is fully filled and hence closed. Taker Orders can transition directly from pending to filled, without going through open.|
|REJECTED = 4|Order is rejected by matching engine since if fails a particular check (See OrderRejectReason). Once an order is open, it cannot be rejected.|
|CANCELLED = 5|Order is cancelled by the user using one of the supported APIs (See OrderRejectReason). Before an order is open, it cannot be cancelled.|
??? info "OrderRejectReason"
|Value| Description |
|-|-|
|UNSPECIFIED = 0|order is not cancelled or rejected|
|CLIENT_CANCEL = 1|client called a Cancel API|
|CLIENT_BULK_CANCEL = 2|client called a Bulk Cancel API|
|CLIENT_SESSION_END = 3|client called a Session Cancel API, or set the WebSocket connection to 'cancelOrdersOnTerminate'|
|MARKET_CANCEL = 4|the market order was cancelled after no/partial fill. Lower precedence than other TimeInForce cancel reasons|
|IOC_CANCEL = 5|the IOC order was cancelled after no/partial fill|
|AON_CANCEL = 6|the AON order was cancelled as it could not be fully matched|
|FOK_CANCEL = 7|the FOK order was cancelled as it could not be fully matched|
|EXPIRED = 8|the order was cancelled as it has expired|
|FAIL_POST_ONLY = 9|the post-only order could not be posted into the orderbook|
|FAIL_REDUCE_ONLY = 10|the reduce-only order would have caused position size to increase|
|MM_PROTECTION = 11|the order was cancelled due to market maker protection trigger|
|SELF_TRADE_PROTECTION = 12|the order was cancelled due to self-trade protection trigger|
|SELF_MATCHED_SUBACCOUNT = 13|the order matched with another order from the same sub account|
|OVERLAPPING_CLIENT_ORDER_ID = 14|an active order on your sub account shares the same clientOrderId|
|BELOW_MARGIN = 15|the order will bring the sub account below initial margin requirement|
|LIQUIDATION = 16|the sub account is liquidated (and all open orders are cancelled by Gravity)|
|INSTRUMENT_INVALID = 17|instrument is invalid or not found on Gravity|
|INSTRUMENT_DEACTIVATED = 18|instrument is no longer tradable on Gravity. (typically due to a market halt, or instrument expiry)|
|SYSTEM_FAILOVER = 19|system failover resulting in loss of order state|
|UNAUTHORISED = 20|the credentials used (userSession/apiKeySession/walletSignature) is not authorised to perform the action|
|SESSION_KEY_EXPIRED = 21|the session key used to sign the order expired|
|SUB_ACCOUNT_NOT_FOUND = 22|the subaccount does not exist|
|NO_TRADE_PERMISSION = 23|the signature used to sign the order has no trade permission|
|UNSUPPORTED_TIME_IN_FORCE = 24|the order payload does not contain a supported TimeInForce value|
|MULTI_LEGGED_ORDER = 25|the order has multiple legs, but multiple legs are not supported by this venue|
|EXCEED_MAX_POSITION_SIZE = 26|the order would have caused the subaccount to exceed the max position size|
|EXCEED_MAX_SIGNATURE_EXPIRATION = 27|the signature supplied is more than 30 days in the future|
|MARKET_ORDER_WITH_LIMIT_PRICE = 28|the market order has a limit price set|
|CLIENT_CANCEL_ON_DISCONNECT_TRIGGERED = 29|client cancel on disconnect triggered|
|OCO_COUNTER_PART_TRIGGERED = 30|the OCO counter part order was triggered|
|REDUCE_ONLY_LIMIT = 31|the remaining order size was cancelled because it exceeded current position size|
|CLIENT_REPLACE = 32|the order was replaced by a client replace request|
|DERISK_MUST_BE_IOC = 33|the derisk order must be an IOC order|
|DERISK_MUST_BE_REDUCE_ONLY = 34|the derisk order must be a reduce-only order|
|DERISK_NOT_SUPPORTED = 35|derisk is not supported|
|INVALID_ORDER_TYPE = 36|the order type is invalid|
|CURRENCY_NOT_DEFINED = 37|the currency is not defined|