> For the complete documentation index, see [llms.txt](https://docs.reya.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.reya.xyz/developers/devnet/api-reference/rest-api-reference/models.md).

# Models

## The TriggerOrderType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TriggerOrderType":{"type":"string","enum":["STOP_LOSS","TAKE_PROFIT"]}}}}
```

## The LimitOrderType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"LimitOrderType":{"type":"string","enum":["LIMIT"]}}}}
```

## The RequestError object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"RequestError":{"title":"RequestError","type":"object","required":["error","message"],"properties":{"error":{"$ref":"#/components/schemas/RequestErrorCode"},"message":{"type":"string","description":"Human-readable error message"},"retryAfterMs":{"type":"integer","minimum":1,"description":"Minimum wait in milliseconds before retrying the rejected operation. Included for `RATE_LIMITED_ERROR`; omitted for errors without a retry hint, including resting-order caps and `CAPACITY_LIMITED_ERROR`. The same field appears in the REST HTTP 400 body and the order-entry WebSocket's `{ ok: false, error }` response. When present, it is a positive integer. Wait at least this long; it does not reserve capacity, and concurrent requests can consume the account's available budget."}},"additionalProperties":true},"RequestErrorCode":{"title":"RequestErrorCode","type":"string","enum":["SYMBOL_NOT_FOUND_ERROR","NO_ACCOUNTS_FOUND_ERROR","NO_PRICES_FOUND_FOR_SYMBOL_ERROR","INPUT_VALIDATION_ERROR","CREATE_ORDER_OTHER_ERROR","CANCEL_ORDER_OTHER_ERROR","ORDER_DEADLINE_PASSED_ERROR","ORDER_DEADLINE_TOO_HIGH_ERROR","INVALID_NONCE_ERROR","UNAVAILABLE_MATCHING_ENGINE_ERROR","UNAUTHORIZED_SIGNATURE_ERROR","NUMERIC_OVERFLOW_ERROR","CANCEL_ALL_AFTER_OTHER_ERROR","ORDER_NOT_FOUND_ERROR","POST_ONLY_WOULD_CROSS_ERROR","MODIFY_QTY_BELOW_FILLED_ERROR","EMPTY_MODIFY_ERROR","MODIFY_ORDER_OTHER_ERROR","RATE_LIMITED_ERROR","INSUFFICIENT_BALANCE_ERROR","PRICE_QTY_BOUNDS_ERROR","SERVICE_DISABLED_ERROR","UNAUTHORIZED_ACCOUNT_ERROR","TRADING_HALTED_ERROR","DUPLICATE_CLIENT_ORDER_ID_ERROR","ACCOUNT_BELOW_LIQUIDATION_MARGIN_ERROR","ACCOUNT_BELOW_INITIAL_MARGIN_ERROR","OPEN_INTEREST_CAP_ERROR","OPEN_INTEREST_BUDGET_ERROR","REDUCE_ONLY_CONDITION_NOT_MET_ERROR","CROSSING_ORDERS_TEMPORARILY_UNAVAILABLE_ERROR","TRIGGER_IOC_MUST_NOT_EXPIRE_ERROR","TRIGGER_LIMIT_OUTSIDE_BAND_ERROR","TRIGGER_ALREADY_EXISTS_ERROR","ORDER_EXPIRES_TOO_SOON_ERROR","OPEN_ORDER_COUNT_EXCEEDED_ERROR","OPEN_ORDER_NOTIONAL_EXCEEDED_ERROR","CAPACITY_LIMITED_ERROR","NOT_WHITELISTED_ERROR","ACCOUNT_SUSPENDED_ERROR","UNAVAILABLE_ACCOUNT_OWNER_ERROR"],"description":"Machine-readable request rejection code. REST returns HTTP 400; the order-entry WebSocket returns the same code in its correlated error response. See the REST API HTTP 400 response reference for per-code meanings and retry guidance."}}}}
```

## The ServerError object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ServerError":{"title":"ServerError","type":"object","required":["error","message"],"properties":{"error":{"$ref":"#/components/schemas/ServerErrorCode"},"message":{"type":"string","description":"Human-readable error message"}},"additionalProperties":true},"ServerErrorCode":{"title":"ServerErrorCode","type":"string","enum":["INTERNAL_SERVER_ERROR"],"description":"Standardized error codes for API responses"}}}}
```

## The MarketDefinition object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"MarketDefinition":{"title":"MarketDefinition","type":"object","required":["symbol","marketId","minOrderQty","qtyStepSize","tickSize","liquidationMarginParameter","initialMarginParameter","maxLeverage","oiCap"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"marketId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Numerical identifier for each market, only needed to generate signatures"},"minOrderQty":{"$ref":"#/components/schemas/UnsignedDecimal"},"qtyStepSize":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum size increment"},"tickSize":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum price increment"},"liquidationMarginParameter":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum percentage of notional that needs to be covered to avoid liquidation procedures for a given market; below this value, your account is subject to liquidation procedures. When cross margining, all requirements across markets are covered by the same balance, and all positions are subject to liquidations."},"initialMarginParameter":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum percentage of notional that needs to be covered post trade; if the account does not satisfy this requirement, trades will not get executed."},"maxLeverage":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maximum leverage allowed"},"oiCap":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Maximum one-sided open interest in units for a given market."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The SpotMarketDefinition object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"SpotMarketDefinition":{"title":"SpotMarketDefinition","type":"object","required":["symbol","marketId","baseAsset","quoteAsset","minOrderQty","qtyStepSize","tickSize"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"marketId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Numerical identifier for each spot market"},"baseAsset":{"type":"string","description":"Base asset symbol"},"quoteAsset":{"type":"string","description":"Quote asset symbol"},"minOrderQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum order quantity (base asset)"},"qtyStepSize":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum size increment (base asset)"},"tickSize":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Minimum price increment"}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The AssetDefinition object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"AssetDefinition":{"title":"AssetDefinition","type":"object","required":["asset","priceHaircut","liquidationDiscount","status","decimals","displayDecimals"],"properties":{"asset":{"$ref":"#/components/schemas/Asset"},"spotMarketSymbol":{"$ref":"#/components/schemas/Symbol"},"priceHaircut":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Notional discount to the value of a collateral when used to satisfy the margin requirements; it does not imply any token conversion, but is rather an accounting adjustment."},"liquidationDiscount":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Discount in the token price when liquidating collateral."},"status":{"type":"string","enum":["ENABLED","WITHDRAWAL_ONLY"],"description":"Status of asset (ENABLED = deposits and withdrawals allowed, WITHDRAWAL_ONLY = only withdrawals allowed)"},"decimals":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of decimal places for record keeping amounts of this asset (e.g. 18 for ETH, 6 for RUSD)"},"displayDecimals":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of decimal places shown for display purposes in frontends"}},"additionalProperties":true},"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The FeeTierParameters object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"FeeTierParameters":{"title":"FeeTierParameters","type":"object","required":["tierId","takerFee","makerFee","volume30d","tierType"],"properties":{"tierId":{"$ref":"#/components/schemas/UnsignedInteger"},"takerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Taker fee rate (fee will be qty * takerFee)"},"makerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Maker fee rate (fee will be qty * makerFee)"},"volume30d":{"$ref":"#/components/schemas/UnsignedDecimal","description":"30-day volume level required for this fee tier to be applied to a wallet"},"tierType":{"$ref":"#/components/schemas/TierType"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"TierType":{"title":"TierType","type":"string","enum":["REGULAR","VIP"],"description":"Fee tier type (REGULAR = Standard tier, VIP = VIP tier)"}}}}
```

## The GlobalFeeParameters object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"GlobalFeeParameters":{"title":"GlobalFeeParameters","type":"object","required":["ogDiscount","refereeDiscount","referrerRebate","affiliateReferrerRebate"],"properties":{"ogDiscount":{"$ref":"#/components/schemas/UnsignedDecimal","description":"OG user discount"},"refereeDiscount":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Referee discount"},"referrerRebate":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Referrer rebate"},"affiliateReferrerRebate":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Affiliate referrer rebate"}},"additionalProperties":true},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The WalletConfiguration object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"WalletConfiguration":{"title":"WalletConfiguration","type":"object","required":["feeTierId","ogStatus","affiliateStatus","refereeStatus"],"properties":{"feeTierId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Fee tier identifier"},"ogStatus":{"type":"boolean","description":"OG status"},"affiliateStatus":{"type":"boolean","description":"Affiliate status"},"refereeStatus":{"type":"boolean","description":"Referee status"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The MarketSummary object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"MarketSummary":{"title":"MarketSummary","type":"object","required":["symbol","updatedAt","oiQty","fundingRate","longFundingValue","shortFundingValue","volume24h"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Time when the market summary was last calculated (milliseconds)"},"oiQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Total open interest quantity"},"fundingRate":{"$ref":"#/components/schemas/SignedDecimal","description":"Current hourly funding rate"},"longFundingValue":{"$ref":"#/components/schemas/SignedDecimal","description":"Current reference value of funding accrued by one unit of exposure; there is one funding value per market and per direction, with short v long funding values differing possibly due to Auto-Deleveraging (ADL)"},"shortFundingValue":{"$ref":"#/components/schemas/SignedDecimal","description":"Current reference value of funding accrued by one unit of exposure; there is one funding value per market and per direction, with short v long funding values differing possibly due to Auto-Deleveraging (ADL)"},"volume24h":{"$ref":"#/components/schemas/UnsignedDecimal"},"pxChange24h":{"$ref":"#/components/schemas/SignedDecimal"},"markPrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Mark price at the last market summary update: the median of available impact-price, index-plus-premium, and CEX-mark values. Used for PnL, margin, and liquidation calculations."},"oraclePrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Stork index price for the market's underlying, sourced from CEX feeds. Absent when no fresh index tick is available."},"throttledMidPrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Last mid price, at the moment of the last market summary update. Absent on an empty or one-sided book."},"pricesUpdatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last price update (milliseconds)"}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The SpotMarketSummary object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"SpotMarketSummary":{"title":"SpotMarketSummary","type":"object","required":["symbol","updatedAt","volume24h"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Time when the spot market summary was last calculated (milliseconds)"},"volume24h":{"$ref":"#/components/schemas/UnsignedDecimal","description":"24-hour trading volume in USD"},"pxChange24h":{"$ref":"#/components/schemas/SignedDecimal","description":"Absolute 24-hour price change"},"oraclePrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Current oracle price: the Stork price for the market's base token, quoted in USDC (also called rUSD in reya network)"},"throttledMidPrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Last spot orderbook mid price, at the moment of the last market summary update. Omitted when the book is empty or one-sided."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The Position object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Position":{"title":"Position","type":"object","required":["exchangeId","symbol","accountId","qty","side","avgEntryPrice","avgEntryFundingValue","lastTradeSequenceNumber"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"accountId":{"$ref":"#/components/schemas/UnsignedInteger"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"side":{"$ref":"#/components/schemas/Side"},"avgEntryPrice":{"$ref":"#/components/schemas/SignedDecimal"},"avgEntryFundingValue":{"$ref":"#/components/schemas/SignedDecimal","description":"Average of funding values at the entry times of currently open exposure, which serves as a baseline from which to compute the accrued funding in the position: units x (fundingValue - avgEntryFundingValue)"},"lastTradeSequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Sequence number of last execution taken into account for the position."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The Order object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Order":{"title":"Order","type":"object","description":"Order state returned by openOrders, orderChanges, and orderHistory. Event streams and history can contain multiple updates for the same order. Field descriptions specify snapshot/event availability; see OrderStatus for lifecycle states.","required":["exchangeId","symbol","accountId","orderId","side","limitPx","orderType","status","createdAt","lastUpdateAt"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"accountId":{"$ref":"#/components/schemas/UnsignedInteger"},"orderId":{"type":"string"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Monotonic order-event sequence. Present on orderHistory REST rows and orderChanges WS event rows; omitted on openOrders and other resting-order snapshots. Use it to deduplicate inclusive orderHistory page-boundary overlap and to splice orderHistory with the orderChanges live stream."},"clientOrderId":{"type":"string","description":"Client-provided order ID, as a decimal string (`uint64`). Present when the order has a non-zero client id; omitted otherwise."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"execQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Executed quantity in the current order update."},"cumQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Total Executed quantity across all fills where the order is involved."},"firstFillId":{"type":"string","description":"Identifier of the first fill this update represents. Together with fillCount it identifies the fills as a contiguous ID range [firstFillId, firstFillId + fillCount - 1]. For a taker update, the first fill of its matching round; for a maker update, its single fill. Present only on fill updates; absent for non-fill updates and resting-order snapshots."},"fillCount":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of fills this update represents — the length of the contiguous nonce range starting at firstFillId. For a taker update, the fills produced in its matching round; for a maker update, 1. Present only on fill updates; absent otherwise (so it is >= 1 whenever present)."},"side":{"$ref":"#/components/schemas/Side"},"limitPx":{"$ref":"#/components/schemas/SignedDecimal"},"orderType":{"$ref":"#/components/schemas/OrderType"},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"Price at which TP/SL orders will be triggered, should not be set for other order types."},"triggered":{"type":"boolean","description":"For protective stops, false means armed and true means fired; never true for LIMIT orders. Fired children are cancel-only. Omitted on orderHistory, where absence means unknown: use openOrders or walletOrderChanges to distinguish phases. On those two surfaces, omission on older deployments can be treated as false. See POST /v2/createOrder for firing and child-order behavior."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"Order time in force. For a `LIMIT` order it shapes execution directly. For a `STOP_LOSS` / `TAKE_PROFIT` it is the time in force the child order takes on when the trigger fires: `IOC` fills what the book offers and cancels the remainder, `GTC` and `GTT` rest the remainder in the book."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Signed GTT expiry (`OrderDetails.expiresAfter`); omitted for GTC and IOC. For a protective stop, the same expiry covers both the armed stop and its fired child; firing does not start a new lifetime. The stop or its resting child can be cancelled before this timestamp to allow settlement, with `cancelReason: GTT_EXPIRED`."},"reduceOnly":{"type":"boolean","description":"Whether this is a reduce-only order, exclusively used for LIMIT IOC orders. `STOP_LOSS` / `TAKE_PROFIT` orders and the children they fire into are reduce-only by construction — they close the position and can never open one — yet still report `false` here, because this field mirrors the signed on-chain `OrderDetails.reduceOnly`. Do not read `false` on a stop as permission to open a position."},"postOnly":{"type":"boolean","description":"Whether this is a post-only (maker-only) order. Mirrors `CreateOrderRequest.postOnly`; updated by `modifyOrder`."},"status":{"$ref":"#/components/schemas/OrderStatus"},"createdAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Creation timestamp (milliseconds)"},"lastUpdateAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Last update timestamp in milliseconds. For orderChanges WebSocket events and orderHistory REST rows this is the order event timestamp used by orderHistory startTime/endTime filters."},"cancelReason":{"$ref":"#/components/schemas/CancelReason","description":"Machine-readable reason the order was cancelled. Present only when `status` is `CANCELLED`; absent otherwise."},"cancelReasonMessage":{"type":"string","description":"Human-readable explanation of `cancelReason`. Present only when `cancelReason` is present."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"OrderType":{"title":"OrderType","type":"string","enum":["LIMIT","STOP_LOSS","TAKE_PROFIT"],"description":"Order type aligned with the on-chain `OrderDetails.orderType` enum: LIMIT = limit order, STOP_LOSS = stop-loss trigger order, TAKE_PROFIT = take-profit trigger order."},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."},"CancelReason":{"title":"CancelReason","type":"string","enum":["NO_LIQUIDITY","IOC_REMAINDER","SELF_TRADE_PREVENTION","PROTECTIVE_SELF_TRADE_SWEEP","GTT_EXPIRED","USER_CANCEL","MASS_CANCEL","CANCEL_ALL_AFTER","FEED_RESET","RISK_CANCELLED","RISK_REJECTED","OCO_SIBLING_FIRED","POSITION_CLOSED"],"description":"Machine-readable cancellation reason. Present only on CANCELLED orders and may be omitted when unavailable. See Cancellation reasons in the REST API Order Entry section for per-code meanings and handling."}}}}
```

## The OrderHistoryList object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"OrderHistoryList":{"title":"OrderHistoryList","type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"additionalProperties":true},"Order":{"title":"Order","type":"object","description":"Order state returned by openOrders, orderChanges, and orderHistory. Event streams and history can contain multiple updates for the same order. Field descriptions specify snapshot/event availability; see OrderStatus for lifecycle states.","required":["exchangeId","symbol","accountId","orderId","side","limitPx","orderType","status","createdAt","lastUpdateAt"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"accountId":{"$ref":"#/components/schemas/UnsignedInteger"},"orderId":{"type":"string"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Monotonic order-event sequence. Present on orderHistory REST rows and orderChanges WS event rows; omitted on openOrders and other resting-order snapshots. Use it to deduplicate inclusive orderHistory page-boundary overlap and to splice orderHistory with the orderChanges live stream."},"clientOrderId":{"type":"string","description":"Client-provided order ID, as a decimal string (`uint64`). Present when the order has a non-zero client id; omitted otherwise."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"execQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Executed quantity in the current order update."},"cumQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Total Executed quantity across all fills where the order is involved."},"firstFillId":{"type":"string","description":"Identifier of the first fill this update represents. Together with fillCount it identifies the fills as a contiguous ID range [firstFillId, firstFillId + fillCount - 1]. For a taker update, the first fill of its matching round; for a maker update, its single fill. Present only on fill updates; absent for non-fill updates and resting-order snapshots."},"fillCount":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of fills this update represents — the length of the contiguous nonce range starting at firstFillId. For a taker update, the fills produced in its matching round; for a maker update, 1. Present only on fill updates; absent otherwise (so it is >= 1 whenever present)."},"side":{"$ref":"#/components/schemas/Side"},"limitPx":{"$ref":"#/components/schemas/SignedDecimal"},"orderType":{"$ref":"#/components/schemas/OrderType"},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"Price at which TP/SL orders will be triggered, should not be set for other order types."},"triggered":{"type":"boolean","description":"For protective stops, false means armed and true means fired; never true for LIMIT orders. Fired children are cancel-only. Omitted on orderHistory, where absence means unknown: use openOrders or walletOrderChanges to distinguish phases. On those two surfaces, omission on older deployments can be treated as false. See POST /v2/createOrder for firing and child-order behavior."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"Order time in force. For a `LIMIT` order it shapes execution directly. For a `STOP_LOSS` / `TAKE_PROFIT` it is the time in force the child order takes on when the trigger fires: `IOC` fills what the book offers and cancels the remainder, `GTC` and `GTT` rest the remainder in the book."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Signed GTT expiry (`OrderDetails.expiresAfter`); omitted for GTC and IOC. For a protective stop, the same expiry covers both the armed stop and its fired child; firing does not start a new lifetime. The stop or its resting child can be cancelled before this timestamp to allow settlement, with `cancelReason: GTT_EXPIRED`."},"reduceOnly":{"type":"boolean","description":"Whether this is a reduce-only order, exclusively used for LIMIT IOC orders. `STOP_LOSS` / `TAKE_PROFIT` orders and the children they fire into are reduce-only by construction — they close the position and can never open one — yet still report `false` here, because this field mirrors the signed on-chain `OrderDetails.reduceOnly`. Do not read `false` on a stop as permission to open a position."},"postOnly":{"type":"boolean","description":"Whether this is a post-only (maker-only) order. Mirrors `CreateOrderRequest.postOnly`; updated by `modifyOrder`."},"status":{"$ref":"#/components/schemas/OrderStatus"},"createdAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Creation timestamp (milliseconds)"},"lastUpdateAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Last update timestamp in milliseconds. For orderChanges WebSocket events and orderHistory REST rows this is the order event timestamp used by orderHistory startTime/endTime filters."},"cancelReason":{"$ref":"#/components/schemas/CancelReason","description":"Machine-readable reason the order was cancelled. Present only when `status` is `CANCELLED`; absent otherwise."},"cancelReasonMessage":{"type":"string","description":"Human-readable explanation of `cancelReason`. Present only when `cancelReason` is present."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"OrderType":{"title":"OrderType","type":"string","enum":["LIMIT","STOP_LOSS","TAKE_PROFIT"],"description":"Order type aligned with the on-chain `OrderDetails.orderType` enum: LIMIT = limit order, STOP_LOSS = stop-loss trigger order, TAKE_PROFIT = take-profit trigger order."},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."},"CancelReason":{"title":"CancelReason","type":"string","enum":["NO_LIQUIDITY","IOC_REMAINDER","SELF_TRADE_PREVENTION","PROTECTIVE_SELF_TRADE_SWEEP","GTT_EXPIRED","USER_CANCEL","MASS_CANCEL","CANCEL_ALL_AFTER","FEED_RESET","RISK_CANCELLED","RISK_REJECTED","OCO_SIBLING_FIRED","POSITION_CLOSED"],"description":"Machine-readable cancellation reason. Present only on CANCELLED orders and may be omitted when unavailable. See Cancellation reasons in the REST API Order Entry section for per-code meanings and handling."},"PaginationMeta":{"title":"PaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"endTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last result in response order, in milliseconds. Descending endpoints return newest-first, so this is the oldest returned timestamp and can be used as the next page's endTime boundary."},"startTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the first result in response order, in milliseconds. Descending endpoints return newest-first, so this is the newest returned timestamp."}},"additionalProperties":true}}}}
```

## The Account object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Account":{"title":"Account","type":"object","required":["accountId","name","type"],"properties":{"accountId":{"$ref":"#/components/schemas/UnsignedInteger"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/AccountType"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"AccountType":{"title":"AccountType","type":"string","enum":["MAINPERP","SUBPERP","SPOT"],"description":"SPOT = account that can only trade spot, MAINPERP = main perp account, SUBPERP = sub perp account"}}}}
```

## The AccountBalance object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"AccountBalance":{"title":"AccountBalance","type":"object","required":["accountId","asset","realBalance","balanceDEPRECATED"],"properties":{"accountId":{"$ref":"#/components/schemas/UnsignedInteger"},"asset":{"$ref":"#/components/schemas/Asset"},"realBalance":{"$ref":"#/components/schemas/SignedDecimal","description":"Sum of account net deposits (transfers, deposits and withdrawals) and realized pnl from closed positions. Realized pnl only applies to RUSD given it is the only settlement asset"},"balanceDEPRECATED":{"$ref":"#/components/schemas/SignedDecimal","description":"Sum of account net deposits (transfers, deposits and withdrawals). This field is deprecated and will be removed in a future release"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The PerpExecutionList object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"PerpExecutionList":{"title":"PerpExecutionList","type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PerpExecution"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"additionalProperties":true},"PerpExecution":{"title":"PerpExecution","type":"object","description":"A settled perp execution. Maker-side fields are optional. They are always omitted for ADL and MARKET_CLOSE executions, which are single-sided and have no maker, and can also be absent on legacy executions.","required":["exchangeId","symbol","takerAccountId","qty","side","takerFee","price","type","timestamp","sequenceNumber"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty). Absent for ADL and MARKET_CLOSE executions, which have no maker, and when no counterparty is available on a legacy execution."},"takerOrderId":{"type":"string","description":"Order ID for the taker. Absent for legacy V2 executions and omitted when not meaningful."},"makerOrderId":{"type":"string","description":"Order ID for the maker. Absent for legacy V2, ADL, and MARKET_CLOSE executions and omitted when not meaningful."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"side":{"$ref":"#/components/schemas/Side","description":"Execution side from the taker perspective for ORDER_MATCH executions."},"price":{"$ref":"#/components/schemas/SignedDecimal"},"takerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Gross taker fee debit in rUSD (signed; positive means the taker paid a fee). When a fee breakdown is present, this equals `protocolFeeCredit + referrerFeeCredit + takerRebateCredit + poolFeeCredit`."},"protocolFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Protocol component of `takerFee`, in rUSD. Present when the execution includes a fee breakdown; omitted on older executions."},"referrerFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Referral component of `takerFee`, in rUSD. Zero when the taker has no referrer. Present when the execution includes a fee breakdown; omitted on older executions."},"takerRebateCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Rebate component of `takerFee`, in rUSD. It is part of the gross taker debit and is not necessarily an immediate credit back to the taker. Present when the execution includes a fee breakdown; omitted on older executions."},"poolFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Passive-pool component of `takerFee`, in rUSD. Present when the execution includes a fee breakdown; omitted on older executions."},"makerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Signed net maker fee in rUSD (negative means rebate). Available only on older executions with a recorded maker fee or rebate. Omitted on executions with the current taker-fee breakdown and on ADL and MARKET_CLOSE executions."},"takerOpeningFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Opening fee portion of the taker fee in rUSD. Absent for position-extending executions."},"makerOpeningFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Opening portion of `makerFee`, in rUSD. Omitted when `makerFee` is absent and on position-extending executions."},"type":{"$ref":"#/components/schemas/ExecutionType"},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every perp execution in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution with the fill range reported by order responses and order updates."},"takerRealizedPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Realized taker PnL from this execution in rUSD (takerPriceVariationPnl + takerFundingPnl). Absent for position-extending executions."},"makerRealizedPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Realized maker PnL from this execution in rUSD (makerPriceVariationPnl + makerFundingPnl). Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."},"takerPriceVariationPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Taker PnL component from price movement in rUSD. Absent for position-extending executions."},"makerPriceVariationPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Maker PnL component from price movement in rUSD. Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."},"takerFundingPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Taker PnL component from funding payments in rUSD. Absent for position-extending executions."},"makerFundingPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Maker PnL component from funding payments in rUSD. Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionType":{"title":"ExecutionType","type":"string","enum":["ORDER_MATCH","LIQUIDATION","ADL","MARKET_CLOSE"],"description":"Type of execution. MARKET_CLOSE is the terminal execution used to close residual positions when a market is force-closed."},"PaginationMeta":{"title":"PaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"endTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last result in response order, in milliseconds. Descending endpoints return newest-first, so this is the oldest returned timestamp and can be used as the next page's endTime boundary."},"startTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the first result in response order, in milliseconds. Descending endpoints return newest-first, so this is the newest returned timestamp."}},"additionalProperties":true}}}}
```

## The SpotExecutionList object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"SpotExecutionList":{"title":"SpotExecutionList","type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpotExecution"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"additionalProperties":true},"SpotExecution":{"title":"SpotExecution","type":"object","required":["symbol","takerAccountId","makerAccountId","qty","side","takerFee","price","type","timestamp","sequenceNumber"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty)"},"takerOrderId":{"type":"string","description":"Order ID for the taker"},"makerOrderId":{"type":"string","description":"Order ID for the maker"},"side":{"$ref":"#/components/schemas/Side"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"price":{"$ref":"#/components/schemas/SignedDecimal"},"takerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Signed taker fee impact in rUSD. Positive means the taker paid a fee."},"type":{"$ref":"#/components/schemas/ExecutionType"},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every spot execution in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution with the fill range reported by order responses and order updates."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionType":{"title":"ExecutionType","type":"string","enum":["ORDER_MATCH","LIQUIDATION","ADL","MARKET_CLOSE"],"description":"Type of execution. MARKET_CLOSE is the terminal execution used to close residual positions when a market is force-closed."},"PaginationMeta":{"title":"PaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"endTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last result in response order, in milliseconds. Descending endpoints return newest-first, so this is the oldest returned timestamp and can be used as the next page's endTime boundary."},"startTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the first result in response order, in milliseconds. Descending endpoints return newest-first, so this is the newest returned timestamp."}},"additionalProperties":true}}}}
```

## The Transfer object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Transfer":{"title":"Transfer","type":"object","description":"A settled collateral movement from the perspective of accountId. See GET /v2/wallet/{address}/transfers for coverage, transfer types, pagination, and reconciliation. Field descriptions define signs, units, and optional execution links.","required":["sequenceNumber","accountId","asset","amount","netDepositsAfter","type","timestamp","transactionHash"],"properties":{"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unique entry ID, increasing in settlement order and never reused. Use it to order and deduplicate entries; do not infer transfer details from its numeric value."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"The account this entry belongs to."},"asset":{"$ref":"#/components/schemas/Asset"},"amount":{"$ref":"#/components/schemas/SignedDecimal","description":"Amount in asset, signed from this account's perspective: negative for outgoing collateral and positive for incoming collateral."},"netDepositsAfter":{"$ref":"#/components/schemas/SignedDecimal","description":"Net deposits of accountId in asset immediately after this entry, on the same basis as AccountBalance.balanceDEPRECATED. Excludes realized PnL and is not realBalance. See the transfers endpoint's Reconciliation section."},"type":{"$ref":"#/components/schemas/TransferType"},"counterpartyAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"The other account involved in the transfer. Omitted for deposits, withdrawals, pool stakes, and pool unstakes."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market of the related execution: the perp market for fee and rebate entries, or the spot market for spot trades and auto-exchanges. Omitted for unrelated movements and may be absent on historical perp fee entries."},"spotExecutionSequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"`SpotExecution.sequenceNumber` of the spot trade or auto-exchange that caused the entry. Spot entries only."},"fillId":{"type":"string","description":"Fill identifier linking this entry to PerpExecution.fillId or SpotExecution.fillId. Omitted for deposits, liquidations, auto-exchanges, and dust settlements; historical perp fee entries may also omit it."},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Block timestamp of the transfer (milliseconds)"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hash of the transaction that emitted the transfer"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"TransferType":{"title":"TransferType","type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","POOL_STAKE","POOL_UNSTAKE","PERP_TAKER_FEE","PERP_REFERRER_REBATE","PERP_TAKER_REBATE","PERP_POOL_REBATE","PERP_FEE","SPOT_EXECUTION","AUTO_EXCHANGE","AUTO_EXCHANGE_INSURANCE_FEE","LIQUIDATION_INSURANCE_FEE","LIQUIDATION_BACKSTOP_FEE","LIQUIDATION_LIQUIDATOR_REWARD","LIQUIDATION_KEEPER_REWARD","LIQUIDATION_BID_FEE","INSURANCE_FUND_COVERAGE","POOL_MERGE","OTHER"],"description":"Purpose of a transfer entry; direction is given by the sign of amount. See GET /v2/wallet/{address}/transfers, Transfer types, for the meaning of each value."},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"}}}}
```

## The TransferType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TransferType":{"title":"TransferType","type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","POOL_STAKE","POOL_UNSTAKE","PERP_TAKER_FEE","PERP_REFERRER_REBATE","PERP_TAKER_REBATE","PERP_POOL_REBATE","PERP_FEE","SPOT_EXECUTION","AUTO_EXCHANGE","AUTO_EXCHANGE_INSURANCE_FEE","LIQUIDATION_INSURANCE_FEE","LIQUIDATION_BACKSTOP_FEE","LIQUIDATION_LIQUIDATOR_REWARD","LIQUIDATION_KEEPER_REWARD","LIQUIDATION_BID_FEE","INSURANCE_FUND_COVERAGE","POOL_MERGE","OTHER"],"description":"Purpose of a transfer entry; direction is given by the sign of amount. See GET /v2/wallet/{address}/transfers, Transfer types, for the meaning of each value."}}}}
```

## The TransferList object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TransferList":{"title":"TransferList","type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Transfer"}},"meta":{"$ref":"#/components/schemas/CursorPaginationMeta"}},"additionalProperties":true},"Transfer":{"title":"Transfer","type":"object","description":"A settled collateral movement from the perspective of accountId. See GET /v2/wallet/{address}/transfers for coverage, transfer types, pagination, and reconciliation. Field descriptions define signs, units, and optional execution links.","required":["sequenceNumber","accountId","asset","amount","netDepositsAfter","type","timestamp","transactionHash"],"properties":{"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unique entry ID, increasing in settlement order and never reused. Use it to order and deduplicate entries; do not infer transfer details from its numeric value."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"The account this entry belongs to."},"asset":{"$ref":"#/components/schemas/Asset"},"amount":{"$ref":"#/components/schemas/SignedDecimal","description":"Amount in asset, signed from this account's perspective: negative for outgoing collateral and positive for incoming collateral."},"netDepositsAfter":{"$ref":"#/components/schemas/SignedDecimal","description":"Net deposits of accountId in asset immediately after this entry, on the same basis as AccountBalance.balanceDEPRECATED. Excludes realized PnL and is not realBalance. See the transfers endpoint's Reconciliation section."},"type":{"$ref":"#/components/schemas/TransferType"},"counterpartyAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"The other account involved in the transfer. Omitted for deposits, withdrawals, pool stakes, and pool unstakes."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market of the related execution: the perp market for fee and rebate entries, or the spot market for spot trades and auto-exchanges. Omitted for unrelated movements and may be absent on historical perp fee entries."},"spotExecutionSequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"`SpotExecution.sequenceNumber` of the spot trade or auto-exchange that caused the entry. Spot entries only."},"fillId":{"type":"string","description":"Fill identifier linking this entry to PerpExecution.fillId or SpotExecution.fillId. Omitted for deposits, liquidations, auto-exchanges, and dust settlements; historical perp fee entries may also omit it."},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Block timestamp of the transfer (milliseconds)"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hash of the transaction that emitted the transfer"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"TransferType":{"title":"TransferType","type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","POOL_STAKE","POOL_UNSTAKE","PERP_TAKER_FEE","PERP_REFERRER_REBATE","PERP_TAKER_REBATE","PERP_POOL_REBATE","PERP_FEE","SPOT_EXECUTION","AUTO_EXCHANGE","AUTO_EXCHANGE_INSURANCE_FEE","LIQUIDATION_INSURANCE_FEE","LIQUIDATION_BACKSTOP_FEE","LIQUIDATION_LIQUIDATOR_REWARD","LIQUIDATION_KEEPER_REWARD","LIQUIDATION_BID_FEE","INSURANCE_FUND_COVERAGE","POOL_MERGE","OTHER"],"description":"Purpose of a transfer entry; direction is given by the sign of amount. See GET /v2/wallet/{address}/transfers, Transfer types, for the meaning of each value."},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"CursorPaginationMeta":{"title":"CursorPaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested, after the server cap"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"nextCursor":{"type":"string","description":"Opaque cursor for the next page. Pass it unchanged as cursor; omitted when no further page is available. See the transfers endpoint's Pagination section for traversal rules."}},"additionalProperties":true}}}}
```

## The ExecutionBust object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBust":{"title":"ExecutionBust","type":"object","required":["symbol","takerAccountId","exchangeId","makerAccountId","takerOrderId","makerOrderId","qty","side","price","reason","timestamp","sequenceNumber"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol. Spot symbols end in RUSD (e.g. ETHRUSD); perp symbols end in RUSDPERP (e.g. BTCRUSDPERP). Clients can use the suffix to distinguish spot vs perp."},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty)"},"takerOrderId":{"type":"string","description":"Taker order ID"},"makerOrderId":{"type":"string","description":"Order ID for the maker"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Failed base quantity"},"side":{"$ref":"#/components/schemas/Side"},"price":{"$ref":"#/components/schemas/SignedDecimal"},"reason":{"$ref":"#/components/schemas/ExecutionBustReason","description":"Structured settlement failure reason. Use `reasonName` and the accompanying fields to interpret why the execution was reverted."},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Block timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every execution bust in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution bust with its execution and order update."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionBustReason":{"title":"ExecutionBustReason","description":"Machine-readable decoded execution-bust reason. This is a discriminated union keyed by `reasonName`. Known contract errors have strict typed shapes; decoded-but-unmodeled ABI errors use the `ExecutionBustReasonUnmapped` fallback with string-valued `args`.","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonNameOnly"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonExchangeNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorized"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedSigner"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedMatchingEnginePublisher"},{"$ref":"#/components/schemas/ExecutionBustReasonSignerNonceAlreadyUsed"},{"$ref":"#/components/schemas/ExecutionBustReasonMarkPriceStale"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonStalePriceDetected"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountBelowIM"},{"$ref":"#/components/schemas/ExecutionBustReasonReduceOnlyConditionFailed"},{"$ref":"#/components/schemas/ExecutionBustReasonOrderExpired"},{"$ref":"#/components/schemas/ExecutionBustReasonMaxQuantityExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketTypeMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketIdMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonBaseDeltaWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonInvalidFillPrice"},{"$ref":"#/components/schemas/ExecutionBustReasonFillExceedsOrderBaseDelta"},{"$ref":"#/components/schemas/ExecutionBustReasonFeatureUnavailable"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralIsNotQuote"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralCapExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralPoolCollision"},{"$ref":"#/components/schemas/ExecutionBustReasonOpenInterestExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountType"},{"$ref":"#/components/schemas/ExecutionBustReasonNegativeAccountRealBalance"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountInsolvent"},{"$ref":"#/components/schemas/ExecutionBustReasonSameAccountId"},{"$ref":"#/components/schemas/ExecutionBustReasonDecodedLegacy"},{"$ref":"#/components/schemas/ExecutionBustReasonUnknown"},{"$ref":"#/components/schemas/ExecutionBustReasonUnmapped"}]},"ExecutionBustReasonNameOnly":{"title":"ExecutionBustReasonNameOnly","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidSignature","SignatureInvalid","SignatureExpired","SmallOrderSize","DustyOrderSize","InvalidFilledExposures","StorkPayloadOlderThanLatest","ZeroSlTpOrderSize"]}},"additionalProperties":false},"ExecutionBustReasonAccountNotFound":{"title":"ExecutionBustReasonAccountNotFound","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountNotFound"]},"accountId":{"type":"integer","description":"Account identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonExchangeNotFound":{"title":"ExecutionBustReasonExchangeNotFound","type":"object","required":["exchangeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ExchangeNotFound"]},"exchangeId":{"type":"integer","description":"Exchange identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonMarketNotFound":{"title":"ExecutionBustReasonMarketNotFound","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketNotFound"]},"marketId":{"type":"integer","description":"Market identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonUnauthorized":{"title":"ExecutionBustReasonUnauthorized","type":"object","required":["address","reasonName"],"properties":{"reasonName":{"type":"string","enum":["Unauthorized"]},"address":{"type":"string","description":"Address that is not authorized."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedSigner":{"title":"ExecutionBustReasonUnauthorizedSigner","type":"object","required":["signer","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedSigner"]},"signer":{"type":"string","description":"Signer address that is not authorized to trade for the account."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedMatchingEnginePublisher":{"title":"ExecutionBustReasonUnauthorizedMatchingEnginePublisher","type":"object","required":["publisher","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedMatchingEnginePublisher"]},"publisher":{"type":"string","description":"Address associated with the publisher authorization failure."}},"additionalProperties":false},"ExecutionBustReasonSignerNonceAlreadyUsed":{"title":"ExecutionBustReasonSignerNonceAlreadyUsed","type":"object","required":["signer","nonce","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SignerNonceAlreadyUsed"]},"signer":{"type":"string","description":"Signer address that already used the nonce."},"nonce":{"type":"string","description":"Signer nonce that was already consumed. Kept as a string because contract nonces are uint256."}},"additionalProperties":false},"ExecutionBustReasonMarkPriceStale":{"title":"ExecutionBustReasonMarkPriceStale","type":"object","required":["marketId","priceTimestamp","blockTimestamp","maxStaleDuration","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarkPriceStale"]},"marketId":{"type":"integer","description":"Market identifier whose mark price is stale."},"priceTimestamp":{"type":"integer","description":"Timestamp carried by the price update."},"blockTimestamp":{"type":"integer","description":"Block timestamp observed by the contracts."},"maxStaleDuration":{"type":"integer","description":"Maximum allowed price staleness in seconds."}},"additionalProperties":false},"ExecutionBustReasonPriceDeviationTooLarge":{"title":"ExecutionBustReasonPriceDeviationTooLarge","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonPassivePerpPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonSpotPriceDeviationTooLarge"}],"description":"PriceDeviationTooLarge has two contract shapes: passive-perp includes marketId/price/referencePrice/maxDeviation, while spot/core includes fillPrice/oraclePrice/oracleDeviation."},"ExecutionBustReasonPassivePerpPriceDeviationTooLarge":{"title":"ExecutionBustReasonPassivePerpPriceDeviationTooLarge","type":"object","required":["marketId","price","referencePrice","maxDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"marketId":{"type":"integer","description":"Market identifier whose fill price deviated too far."},"price":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"referencePrice":{"type":"string","description":"Reference price decoded from an 18-decimal fixed-point contract value."},"maxDeviation":{"type":"string","description":"Maximum allowed price deviation decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSpotPriceDeviationTooLarge":{"title":"ExecutionBustReasonSpotPriceDeviationTooLarge","type":"object","required":["fillPrice","oraclePrice","oracleDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"oraclePrice":{"type":"string","description":"Oracle price decoded from an 18-decimal fixed-point contract value."},"oracleDeviation":{"type":"string","description":"Oracle deviation threshold decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonStalePriceDetected":{"title":"ExecutionBustReasonStalePriceDetected","type":"object","required":["nodeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["StalePriceDetected"]},"nodeId":{"type":"string","description":"Oracle node identifier that returned a stale price."}},"additionalProperties":false},"ExecutionBustReasonAccountBelowIM":{"title":"ExecutionBustReasonAccountBelowIM","type":"object","required":["accountId","delta","shortfall","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountBelowIM"]},"accountId":{"type":"integer","description":"Account identifier that is below initial margin."},"delta":{"type":"string","description":"Signed initial-margin delta decoded from an 18-decimal fixed-point contract value."},"shortfall":{"type":"string","description":"Absolute initial-margin shortfall decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonReduceOnlyConditionFailed":{"title":"ExecutionBustReasonReduceOnlyConditionFailed","type":"object","required":["marketId","accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ReduceOnlyConditionFailed"]},"marketId":{"type":"integer","description":"Market identifier for the reduce-only check."},"accountId":{"type":"integer","description":"Account identifier for the reduce-only check."}},"additionalProperties":false},"ExecutionBustReasonOrderExpired":{"title":"ExecutionBustReasonOrderExpired","type":"object","required":["expiredAt","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OrderExpired"]},"expiredAt":{"type":"integer","description":"Order expiration timestamp."}},"additionalProperties":false},"ExecutionBustReasonMaxQuantityExceeded":{"title":"ExecutionBustReasonMaxQuantityExceeded","type":"object","required":["updatedQuantity","maxQuantity","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MaxQuantityExceeded"]},"updatedQuantity":{"type":"string","description":"Updated nonce quantity."},"maxQuantity":{"type":"string","description":"Maximum allowed nonce quantity."}},"additionalProperties":false},"ExecutionBustReasonMarketTypeMismatch":{"title":"ExecutionBustReasonMarketTypeMismatch","type":"object","required":["accountMarketType","counterpartyMarketType","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketTypeMismatch"]},"accountMarketType":{"type":"integer","description":"Account-side market type."},"counterpartyMarketType":{"type":"integer","description":"Counterparty-side market type."}},"additionalProperties":false},"ExecutionBustReasonMarketIdMismatch":{"title":"ExecutionBustReasonMarketIdMismatch","type":"object","required":["accountMarketId","counterpartyMarketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketIdMismatch"]},"accountMarketId":{"type":"integer","description":"Account-side market identifier."},"counterpartyMarketId":{"type":"integer","description":"Counterparty-side market identifier."}},"additionalProperties":false},"ExecutionBustReasonBaseDeltaWrongSpacing":{"title":"ExecutionBustReasonBaseDeltaWrongSpacing","type":"object","required":["baseDelta","baseSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["BaseDeltaWrongSpacing"]},"baseDelta":{"type":"string","description":"Base delta decoded from an 18-decimal fixed-point contract value."},"baseSpacing":{"type":"string","description":"Base spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonPriceWrongSpacing":{"title":"ExecutionBustReasonPriceWrongSpacing","type":"object","required":["price","priceSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceWrongSpacing"]},"price":{"type":"string","description":"Price decoded from an 18-decimal fixed-point contract value."},"priceSpacing":{"type":"string","description":"Price spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonInvalidFillPrice":{"title":"ExecutionBustReasonInvalidFillPrice","type":"object","required":["fillPrice","orderPrice","reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidFillPrice"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"orderPrice":{"type":"string","description":"Order limit price decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonFillExceedsOrderBaseDelta":{"title":"ExecutionBustReasonFillExceedsOrderBaseDelta","type":"object","required":["fillAmount","orderBaseDelta","orderRole","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FillExceedsOrderBaseDelta"]},"fillAmount":{"type":"string","description":"Fill amount decoded from an 18-decimal fixed-point contract value."},"orderBaseDelta":{"type":"string","description":"Order base delta decoded from an 18-decimal fixed-point contract value."},"orderRole":{"type":"string","enum":["account","counterparty"],"description":"Whether the failed order was the account or counterparty order."}},"additionalProperties":false},"ExecutionBustReasonFeatureUnavailable":{"title":"ExecutionBustReasonFeatureUnavailable","type":"object","required":["feature","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FeatureUnavailable"]},"feature":{"type":"string","description":"Feature identifier that is disabled."}},"additionalProperties":false},"ExecutionBustReasonCollateralIsNotQuote":{"title":"ExecutionBustReasonCollateralIsNotQuote","type":"object","required":["collateralPoolId","collateral","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralIsNotQuote"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address that is not the quote collateral."}},"additionalProperties":false},"ExecutionBustReasonCollateralCapExceeded":{"title":"ExecutionBustReasonCollateralCapExceeded","type":"object","required":["collateralPoolId","collateral","collateralCap","collateralBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralCapExceeded"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address whose pool cap was exceeded."},"collateralCap":{"type":"string","description":"Collateral cap."},"collateralBalance":{"type":"string","description":"Collateral balance."}},"additionalProperties":false},"ExecutionBustReasonCollateralPoolCollision":{"title":"ExecutionBustReasonCollateralPoolCollision","type":"object","required":["collateralPoolId","counterpartyCollateralPoolId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralPoolCollision"]},"collateralPoolId":{"type":"integer","description":"Account collateral pool identifier."},"counterpartyCollateralPoolId":{"type":"integer","description":"Counterparty collateral pool identifier."}},"additionalProperties":false},"ExecutionBustReasonOpenInterestExceeded":{"title":"ExecutionBustReasonOpenInterestExceeded","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OpenInterestExceeded"]},"marketId":{"type":"integer","description":"Market identifier whose open-interest cap was exceeded."}},"additionalProperties":false},"ExecutionBustReasonAccountType":{"title":"ExecutionBustReasonAccountType","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SpotAccount","NotSpotAccount"]},"accountId":{"type":"integer","description":"Account identifier whose account type failed the check."}},"additionalProperties":false},"ExecutionBustReasonNegativeAccountRealBalance":{"title":"ExecutionBustReasonNegativeAccountRealBalance","type":"object","required":["accountId","realBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["NegativeAccountRealBalance"]},"accountId":{"type":"integer","description":"Account identifier with negative real balance."},"realBalance":{"type":"string","description":"Real balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonAccountInsolvent":{"title":"ExecutionBustReasonAccountInsolvent","type":"object","required":["accountId","marginBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountInsolvent"]},"accountId":{"type":"integer","description":"Account identifier that is insolvent."},"marginBalance":{"type":"string","description":"Margin balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSameAccountId":{"title":"ExecutionBustReasonSameAccountId","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["SameAccountId"]},"accountId":{"type":"integer","description":"Account identifier that matched itself, when emitted by the contract."}},"additionalProperties":false},"ExecutionBustReasonDecodedLegacy":{"title":"ExecutionBustReasonDecodedLegacy","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["DecodedReason"]},"message":{"type":"string","description":"Already-decoded legacy string preserved as a message."}},"additionalProperties":false},"ExecutionBustReasonUnknown":{"title":"ExecutionBustReasonUnknown","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnknownReason"]},"message":{"type":"string","description":"Support-facing fallback for undecodable or empty revert bytes."}},"additionalProperties":false},"ExecutionBustReasonUnmapped":{"title":"ExecutionBustReasonUnmapped","type":"object","required":["reasonName","args"],"properties":{"reasonName":{"type":"string","description":"Decoded custom-error name not explicitly modeled by this schema."},"args":{"type":"object","description":"Named ABI inputs, or arg0/arg1 fallback names, encoded as strings to avoid precision loss.","additionalProperties":{"type":"string"}}},"additionalProperties":false}}}}
```

## The ExecutionBustList object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustList":{"title":"ExecutionBustList","type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExecutionBust"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"additionalProperties":true},"ExecutionBust":{"title":"ExecutionBust","type":"object","required":["symbol","takerAccountId","exchangeId","makerAccountId","takerOrderId","makerOrderId","qty","side","price","reason","timestamp","sequenceNumber"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol. Spot symbols end in RUSD (e.g. ETHRUSD); perp symbols end in RUSDPERP (e.g. BTCRUSDPERP). Clients can use the suffix to distinguish spot vs perp."},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty)"},"takerOrderId":{"type":"string","description":"Taker order ID"},"makerOrderId":{"type":"string","description":"Order ID for the maker"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Failed base quantity"},"side":{"$ref":"#/components/schemas/Side"},"price":{"$ref":"#/components/schemas/SignedDecimal"},"reason":{"$ref":"#/components/schemas/ExecutionBustReason","description":"Structured settlement failure reason. Use `reasonName` and the accompanying fields to interpret why the execution was reverted."},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Block timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every execution bust in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution bust with its execution and order update."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionBustReason":{"title":"ExecutionBustReason","description":"Machine-readable decoded execution-bust reason. This is a discriminated union keyed by `reasonName`. Known contract errors have strict typed shapes; decoded-but-unmodeled ABI errors use the `ExecutionBustReasonUnmapped` fallback with string-valued `args`.","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonNameOnly"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonExchangeNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorized"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedSigner"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedMatchingEnginePublisher"},{"$ref":"#/components/schemas/ExecutionBustReasonSignerNonceAlreadyUsed"},{"$ref":"#/components/schemas/ExecutionBustReasonMarkPriceStale"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonStalePriceDetected"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountBelowIM"},{"$ref":"#/components/schemas/ExecutionBustReasonReduceOnlyConditionFailed"},{"$ref":"#/components/schemas/ExecutionBustReasonOrderExpired"},{"$ref":"#/components/schemas/ExecutionBustReasonMaxQuantityExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketTypeMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketIdMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonBaseDeltaWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonInvalidFillPrice"},{"$ref":"#/components/schemas/ExecutionBustReasonFillExceedsOrderBaseDelta"},{"$ref":"#/components/schemas/ExecutionBustReasonFeatureUnavailable"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralIsNotQuote"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralCapExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralPoolCollision"},{"$ref":"#/components/schemas/ExecutionBustReasonOpenInterestExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountType"},{"$ref":"#/components/schemas/ExecutionBustReasonNegativeAccountRealBalance"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountInsolvent"},{"$ref":"#/components/schemas/ExecutionBustReasonSameAccountId"},{"$ref":"#/components/schemas/ExecutionBustReasonDecodedLegacy"},{"$ref":"#/components/schemas/ExecutionBustReasonUnknown"},{"$ref":"#/components/schemas/ExecutionBustReasonUnmapped"}]},"ExecutionBustReasonNameOnly":{"title":"ExecutionBustReasonNameOnly","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidSignature","SignatureInvalid","SignatureExpired","SmallOrderSize","DustyOrderSize","InvalidFilledExposures","StorkPayloadOlderThanLatest","ZeroSlTpOrderSize"]}},"additionalProperties":false},"ExecutionBustReasonAccountNotFound":{"title":"ExecutionBustReasonAccountNotFound","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountNotFound"]},"accountId":{"type":"integer","description":"Account identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonExchangeNotFound":{"title":"ExecutionBustReasonExchangeNotFound","type":"object","required":["exchangeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ExchangeNotFound"]},"exchangeId":{"type":"integer","description":"Exchange identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonMarketNotFound":{"title":"ExecutionBustReasonMarketNotFound","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketNotFound"]},"marketId":{"type":"integer","description":"Market identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonUnauthorized":{"title":"ExecutionBustReasonUnauthorized","type":"object","required":["address","reasonName"],"properties":{"reasonName":{"type":"string","enum":["Unauthorized"]},"address":{"type":"string","description":"Address that is not authorized."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedSigner":{"title":"ExecutionBustReasonUnauthorizedSigner","type":"object","required":["signer","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedSigner"]},"signer":{"type":"string","description":"Signer address that is not authorized to trade for the account."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedMatchingEnginePublisher":{"title":"ExecutionBustReasonUnauthorizedMatchingEnginePublisher","type":"object","required":["publisher","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedMatchingEnginePublisher"]},"publisher":{"type":"string","description":"Address associated with the publisher authorization failure."}},"additionalProperties":false},"ExecutionBustReasonSignerNonceAlreadyUsed":{"title":"ExecutionBustReasonSignerNonceAlreadyUsed","type":"object","required":["signer","nonce","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SignerNonceAlreadyUsed"]},"signer":{"type":"string","description":"Signer address that already used the nonce."},"nonce":{"type":"string","description":"Signer nonce that was already consumed. Kept as a string because contract nonces are uint256."}},"additionalProperties":false},"ExecutionBustReasonMarkPriceStale":{"title":"ExecutionBustReasonMarkPriceStale","type":"object","required":["marketId","priceTimestamp","blockTimestamp","maxStaleDuration","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarkPriceStale"]},"marketId":{"type":"integer","description":"Market identifier whose mark price is stale."},"priceTimestamp":{"type":"integer","description":"Timestamp carried by the price update."},"blockTimestamp":{"type":"integer","description":"Block timestamp observed by the contracts."},"maxStaleDuration":{"type":"integer","description":"Maximum allowed price staleness in seconds."}},"additionalProperties":false},"ExecutionBustReasonPriceDeviationTooLarge":{"title":"ExecutionBustReasonPriceDeviationTooLarge","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonPassivePerpPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonSpotPriceDeviationTooLarge"}],"description":"PriceDeviationTooLarge has two contract shapes: passive-perp includes marketId/price/referencePrice/maxDeviation, while spot/core includes fillPrice/oraclePrice/oracleDeviation."},"ExecutionBustReasonPassivePerpPriceDeviationTooLarge":{"title":"ExecutionBustReasonPassivePerpPriceDeviationTooLarge","type":"object","required":["marketId","price","referencePrice","maxDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"marketId":{"type":"integer","description":"Market identifier whose fill price deviated too far."},"price":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"referencePrice":{"type":"string","description":"Reference price decoded from an 18-decimal fixed-point contract value."},"maxDeviation":{"type":"string","description":"Maximum allowed price deviation decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSpotPriceDeviationTooLarge":{"title":"ExecutionBustReasonSpotPriceDeviationTooLarge","type":"object","required":["fillPrice","oraclePrice","oracleDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"oraclePrice":{"type":"string","description":"Oracle price decoded from an 18-decimal fixed-point contract value."},"oracleDeviation":{"type":"string","description":"Oracle deviation threshold decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonStalePriceDetected":{"title":"ExecutionBustReasonStalePriceDetected","type":"object","required":["nodeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["StalePriceDetected"]},"nodeId":{"type":"string","description":"Oracle node identifier that returned a stale price."}},"additionalProperties":false},"ExecutionBustReasonAccountBelowIM":{"title":"ExecutionBustReasonAccountBelowIM","type":"object","required":["accountId","delta","shortfall","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountBelowIM"]},"accountId":{"type":"integer","description":"Account identifier that is below initial margin."},"delta":{"type":"string","description":"Signed initial-margin delta decoded from an 18-decimal fixed-point contract value."},"shortfall":{"type":"string","description":"Absolute initial-margin shortfall decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonReduceOnlyConditionFailed":{"title":"ExecutionBustReasonReduceOnlyConditionFailed","type":"object","required":["marketId","accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ReduceOnlyConditionFailed"]},"marketId":{"type":"integer","description":"Market identifier for the reduce-only check."},"accountId":{"type":"integer","description":"Account identifier for the reduce-only check."}},"additionalProperties":false},"ExecutionBustReasonOrderExpired":{"title":"ExecutionBustReasonOrderExpired","type":"object","required":["expiredAt","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OrderExpired"]},"expiredAt":{"type":"integer","description":"Order expiration timestamp."}},"additionalProperties":false},"ExecutionBustReasonMaxQuantityExceeded":{"title":"ExecutionBustReasonMaxQuantityExceeded","type":"object","required":["updatedQuantity","maxQuantity","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MaxQuantityExceeded"]},"updatedQuantity":{"type":"string","description":"Updated nonce quantity."},"maxQuantity":{"type":"string","description":"Maximum allowed nonce quantity."}},"additionalProperties":false},"ExecutionBustReasonMarketTypeMismatch":{"title":"ExecutionBustReasonMarketTypeMismatch","type":"object","required":["accountMarketType","counterpartyMarketType","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketTypeMismatch"]},"accountMarketType":{"type":"integer","description":"Account-side market type."},"counterpartyMarketType":{"type":"integer","description":"Counterparty-side market type."}},"additionalProperties":false},"ExecutionBustReasonMarketIdMismatch":{"title":"ExecutionBustReasonMarketIdMismatch","type":"object","required":["accountMarketId","counterpartyMarketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketIdMismatch"]},"accountMarketId":{"type":"integer","description":"Account-side market identifier."},"counterpartyMarketId":{"type":"integer","description":"Counterparty-side market identifier."}},"additionalProperties":false},"ExecutionBustReasonBaseDeltaWrongSpacing":{"title":"ExecutionBustReasonBaseDeltaWrongSpacing","type":"object","required":["baseDelta","baseSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["BaseDeltaWrongSpacing"]},"baseDelta":{"type":"string","description":"Base delta decoded from an 18-decimal fixed-point contract value."},"baseSpacing":{"type":"string","description":"Base spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonPriceWrongSpacing":{"title":"ExecutionBustReasonPriceWrongSpacing","type":"object","required":["price","priceSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceWrongSpacing"]},"price":{"type":"string","description":"Price decoded from an 18-decimal fixed-point contract value."},"priceSpacing":{"type":"string","description":"Price spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonInvalidFillPrice":{"title":"ExecutionBustReasonInvalidFillPrice","type":"object","required":["fillPrice","orderPrice","reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidFillPrice"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"orderPrice":{"type":"string","description":"Order limit price decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonFillExceedsOrderBaseDelta":{"title":"ExecutionBustReasonFillExceedsOrderBaseDelta","type":"object","required":["fillAmount","orderBaseDelta","orderRole","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FillExceedsOrderBaseDelta"]},"fillAmount":{"type":"string","description":"Fill amount decoded from an 18-decimal fixed-point contract value."},"orderBaseDelta":{"type":"string","description":"Order base delta decoded from an 18-decimal fixed-point contract value."},"orderRole":{"type":"string","enum":["account","counterparty"],"description":"Whether the failed order was the account or counterparty order."}},"additionalProperties":false},"ExecutionBustReasonFeatureUnavailable":{"title":"ExecutionBustReasonFeatureUnavailable","type":"object","required":["feature","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FeatureUnavailable"]},"feature":{"type":"string","description":"Feature identifier that is disabled."}},"additionalProperties":false},"ExecutionBustReasonCollateralIsNotQuote":{"title":"ExecutionBustReasonCollateralIsNotQuote","type":"object","required":["collateralPoolId","collateral","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralIsNotQuote"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address that is not the quote collateral."}},"additionalProperties":false},"ExecutionBustReasonCollateralCapExceeded":{"title":"ExecutionBustReasonCollateralCapExceeded","type":"object","required":["collateralPoolId","collateral","collateralCap","collateralBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralCapExceeded"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address whose pool cap was exceeded."},"collateralCap":{"type":"string","description":"Collateral cap."},"collateralBalance":{"type":"string","description":"Collateral balance."}},"additionalProperties":false},"ExecutionBustReasonCollateralPoolCollision":{"title":"ExecutionBustReasonCollateralPoolCollision","type":"object","required":["collateralPoolId","counterpartyCollateralPoolId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralPoolCollision"]},"collateralPoolId":{"type":"integer","description":"Account collateral pool identifier."},"counterpartyCollateralPoolId":{"type":"integer","description":"Counterparty collateral pool identifier."}},"additionalProperties":false},"ExecutionBustReasonOpenInterestExceeded":{"title":"ExecutionBustReasonOpenInterestExceeded","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OpenInterestExceeded"]},"marketId":{"type":"integer","description":"Market identifier whose open-interest cap was exceeded."}},"additionalProperties":false},"ExecutionBustReasonAccountType":{"title":"ExecutionBustReasonAccountType","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SpotAccount","NotSpotAccount"]},"accountId":{"type":"integer","description":"Account identifier whose account type failed the check."}},"additionalProperties":false},"ExecutionBustReasonNegativeAccountRealBalance":{"title":"ExecutionBustReasonNegativeAccountRealBalance","type":"object","required":["accountId","realBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["NegativeAccountRealBalance"]},"accountId":{"type":"integer","description":"Account identifier with negative real balance."},"realBalance":{"type":"string","description":"Real balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonAccountInsolvent":{"title":"ExecutionBustReasonAccountInsolvent","type":"object","required":["accountId","marginBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountInsolvent"]},"accountId":{"type":"integer","description":"Account identifier that is insolvent."},"marginBalance":{"type":"string","description":"Margin balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSameAccountId":{"title":"ExecutionBustReasonSameAccountId","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["SameAccountId"]},"accountId":{"type":"integer","description":"Account identifier that matched itself, when emitted by the contract."}},"additionalProperties":false},"ExecutionBustReasonDecodedLegacy":{"title":"ExecutionBustReasonDecodedLegacy","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["DecodedReason"]},"message":{"type":"string","description":"Already-decoded legacy string preserved as a message."}},"additionalProperties":false},"ExecutionBustReasonUnknown":{"title":"ExecutionBustReasonUnknown","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnknownReason"]},"message":{"type":"string","description":"Support-facing fallback for undecodable or empty revert bytes."}},"additionalProperties":false},"ExecutionBustReasonUnmapped":{"title":"ExecutionBustReasonUnmapped","type":"object","required":["reasonName","args"],"properties":{"reasonName":{"type":"string","description":"Decoded custom-error name not explicitly modeled by this schema."},"args":{"type":"object","description":"Named ABI inputs, or arg0/arg1 fallback names, encoded as strings to avoid precision loss.","additionalProperties":{"type":"string"}}},"additionalProperties":false},"PaginationMeta":{"title":"PaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"endTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last result in response order, in milliseconds. Descending endpoints return newest-first, so this is the oldest returned timestamp and can be used as the next page's endTime boundary."},"startTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the first result in response order, in milliseconds. Descending endpoints return newest-first, so this is the newest returned timestamp."}},"additionalProperties":true}}}}
```

## The AssetOraclePrice object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"AssetOraclePrice":{"title":"AssetOraclePrice","type":"object","required":["asset","updatedAt","oraclePrice"],"properties":{"asset":{"$ref":"#/components/schemas/Asset"},"oraclePrice":{"$ref":"#/components/schemas/SignedDecimal","description":"Asset oracle price supplied by Stork."},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Last update timestamp (milliseconds)"}},"additionalProperties":true},"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The CandleHistoryData object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CandleHistoryData":{"title":"CandleHistoryData","type":"object","required":["t","o","h","l","c"],"properties":{"t":{"type":"array","items":{"$ref":"#/components/schemas/UnsignedInteger"},"description":"Array of timestamps (seconds)"},"o":{"type":"array","items":{"$ref":"#/components/schemas/SignedDecimal"},"description":"Array of opening prices"},"h":{"type":"array","items":{"$ref":"#/components/schemas/SignedDecimal"},"description":"Array of high prices"},"l":{"type":"array","items":{"$ref":"#/components/schemas/SignedDecimal"},"description":"Array of low prices"},"c":{"type":"array","items":{"$ref":"#/components/schemas/SignedDecimal"},"description":"Array of closing prices"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The CreateOrderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CreateOrderRequest":{"title":"CreateOrderRequest","description":"Create an order with an EIP-712 signature, nonce, and deadline. Field descriptions define signed values and order-class requirements. See POST /v2/createOrder for execution and protective-stop behavior.","type":"object","required":["exchangeId","symbol","accountId","isBuy","limitPx","orderType","timeInForce","signature","nonce","signerWallet","deadline"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.exchangeId`."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol. The server resolves this to the on-chain `OrderDetails.marketId`, which uses a unified namespace: perp market ids are raw core ids, spot market ids are `coreMarketId + 1e10`."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.accountId`."},"isBuy":{"type":"boolean","description":"Whether this is a buy order. Combined with `qty`, determines the signed `OrderDetails.quantity` (int256): positive for buy/long, negative for sell/short."},"limitPx":{"$ref":"#/components/schemas/SignedDecimal","description":"Worst acceptable execution price. Must be positive (> 0). Maps to signed `OrderDetails.limitPrice` (uint256). For a STOP_LOSS/TAKE_PROFIT, this is the child's worst execution price, not an offset added to `triggerPx`. Keep it within the permitted range around the trigger price. `TRIGGER_LIMIT_OUTSIDE_BAND_ERROR` indicates an out-of-range price or that stops are unavailable for the market."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Unsigned quantity, required for LIMIT orders; its sign in OrderDetails.quantity follows isBuy. Omit for STOP_LOSS/TAKE_PROFIT and sign the full-position sentinel ±int256.max (raw, not E18), with sign from isBuy. A protective stop takes its executable size from the position when it fires."},"orderType":{"$ref":"#/components/schemas/OrderType","description":"On-chain `OrderDetails.orderType`: LIMIT, STOP_LOSS, or TAKE_PROFIT."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"Required signed OrderDetails.timeInForce (0 = GTC, 1 = IOC, 2 = GTT). For a protective stop, selects its fired child's time in force. Only GTT carries expiresAfter; GTC and IOC omit it. See POST /v2/createOrder for execution, expiry, and invalid-combination handling."},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"Trigger price, required for STOP_LOSS/TAKE_PROFIT and omitted for LIMIT. Maps to on-chain `OrderDetails.triggerPrice`. The trigger fires when the market's mark price crosses this level; it is also the reference the `limitPx` band is measured from (see `limitPx`)."},"reduceOnly":{"type":"boolean","description":"Reduce-only intent. Required only for perp IOC orders. Omit this field for every other order class: perp GTC/GTT, STOP_LOSS/TAKE_PROFIT, and all spot orders. Sending the field, including `false`, for those order classes is rejected with `INPUT_VALIDATION_ERROR`. Omitted values map to `false` in the signed on-chain `OrderDetails.reduceOnly` field."},"postOnly":{"type":"boolean","description":"Post-only (maker-only) intent for LIMIT GTC/GTT orders; rejected on IOC. Omit for STOP_LOSS/TAKE_PROFIT, including false: triggers sign OrderDetails.postOnly=false. A post-only LIMIT that would cross is rejected with POST_ONLY_WOULD_CROSS_ERROR."},"signature":{"type":"string","description":"EIP-712 signature over the `Order(uint256 verifyingChainId, uint256 deadline, OrderDetails order)` envelope. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. Maps to on-chain `OrderDetails.nonce`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Maps to on-chain `OrderDetails.signer`."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Required EIP-712 signature-validity deadline, signed into the `Order` envelope. Requests received after this timestamp are rejected. It controls request acceptance only: once accepted, an order remains valid after `deadline` passes. An armed protective stop can still fire afterwards. Use `expiresAfter` to set GTT order lifetime."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"GTT expiry in Unix seconds, signed as OrderDetails.expiresAfter. Required for GTT, in the future and strictly greater than deadline; omitted for GTC/IOC. A protective stop and its child share this expiry. See POST /v2/createOrder for early cancellation, settlement, and expiry errors."},"clientOrderId":{"type":"string","description":"Client-provided correlation ID, signed as OrderDetails.clientOrderId (uint64). Omit when unused; otherwise send a non-zero decimal string to preserve precision."}},"additionalProperties":true,"not":{"anyOf":[{"description":"TP/SL requests must omit both fixed Boolean fields, even when false.","properties":{"orderType":{"$ref":"#/components/schemas/TriggerOrderType"}},"required":["orderType"],"anyOf":[{"required":["reduceOnly"]},{"required":["postOnly"]}]}]}},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"OrderType":{"title":"OrderType","type":"string","enum":["LIMIT","STOP_LOSS","TAKE_PROFIT"],"description":"Order type aligned with the on-chain `OrderDetails.orderType` enum: LIMIT = limit order, STOP_LOSS = stop-loss trigger order, TAKE_PROFIT = take-profit trigger order."},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"TriggerOrderType":{"type":"string","enum":["STOP_LOSS","TAKE_PROFIT"]}}}}
```

## The CreateOrderResponse object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CreateOrderResponse":{"title":"CreateOrderResponse","type":"object","required":["status","orderId"],"properties":{"status":{"$ref":"#/components/schemas/OrderStatus"},"execQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Executed quantity in the current order update."},"cumQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Total Executed quantity across all fills where the order is involved."},"orderId":{"type":"string","description":"Reya-assigned order ID, generated for all order types including IOC. A no-cross IOC still receives an ID and is returned with status CANCELLED (it never rests)."},"clientOrderId":{"type":"string","description":"Client-provided order ID echoed back from the request, as a decimal string (`uint64`)."},"cancelReason":{"$ref":"#/components/schemas/CancelReason","description":"Machine-readable reason the order was cancelled. Present if and only if `status` is `CANCELLED` — e.g. a no-cross IOC returns `status: CANCELLED` with `cancelReason: NO_LIQUIDITY`, and a self-crossing IOC with `SELF_TRADE_PREVENTION`. Omitted entirely otherwise."},"cancelReasonMessage":{"type":"string","description":"Human-readable explanation of `cancelReason`. Present only when `cancelReason` is present."},"firstFillId":{"type":"string","description":"First fill ID produced by this request. With fillCount, identifies [firstFillId, firstFillId + fillCount - 1]. Omitted if no fill occurred. See POST /v2/createOrder, Responses and fill correlation, for joining responses to streamed executions."},"fillCount":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of fills produced by this request, starting at firstFillId. Omitted if no fill occurred; positive whenever present."}},"additionalProperties":true},"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"CancelReason":{"title":"CancelReason","type":"string","enum":["NO_LIQUIDITY","IOC_REMAINDER","SELF_TRADE_PREVENTION","PROTECTIVE_SELF_TRADE_SWEEP","GTT_EXPIRED","USER_CANCEL","MASS_CANCEL","CANCEL_ALL_AFTER","FEED_RESET","RISK_CANCELLED","RISK_REJECTED","OCO_SIBLING_FIRED","POSITION_CLOSED"],"description":"Machine-readable cancellation reason. Present only on CANCELLED orders and may be omitted when unavailable. See Cancellation reasons in the REST API Order Entry section for per-code meanings and handling."},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The ModifyOrderRequestBase object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ModifyOrderRequestBase":{"title":"ModifyOrderRequestBase","description":"Modify a resting order using its complete intended post-modify state and a fresh signature and nonce. Omitted fields do not inherit existing values. Target by `orderId` or a non-zero `clientOrderId`. See `POST /v2/modifyOrder` for modifiable fields, priority, and execution behavior.","type":"object","required":["exchangeId","symbol","accountId","isBuy","limitPx","timeInForce","signature","nonce","signerWallet","deadline"],"not":{"anyOf":[{"description":"At least one target identifier is required. If `orderId` is absent, `clientOrderId` must be non-zero.","allOf":[{"not":{"properties":{"orderId":{"type":"string"}},"required":["orderId"]}},{"not":{"properties":{"clientOrderId":{"type":"string"}},"required":["clientOrderId"]}}]}]},"properties":{"orderId":{"type":"string","description":"Reya-assigned order ID of the order to modify. If present, this is the canonical lookup key; `clientOrderId`, when also present, restates the resting order's immutable client id."},"clientOrderId":{"type":"string","description":"Restated client-provided order ID, as a decimal string (`uint64`). Used as the lookup key only when `orderId` is absent, and then it must be non-zero. If `orderId` is present, this field restates the resting order's immutable client id for signing; omit it when the resting order has no client id. Do not send a placeholder value. The modification cannot assign a new `clientOrderId`."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol for the order."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID that owns the order. Immutable; must match the resting order."},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.exchangeId`. Immutable — restate the resting order's value (a mismatch is rejected with `INPUT_VALIDATION_ERROR`)."},"isBuy":{"type":"boolean","description":"Order side. Immutable — restate the resting order's value. Combined with `qty`, sets the signed `OrderDetails.quantity` (int256). A mismatch is rejected with `INPUT_VALIDATION_ERROR`."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"On-chain `OrderDetails.timeInForce` (0 = GTC, 1 = IOC, 2 = GTT). Immutable and REQUIRED — restate the resting order's value; a modify never converts between time-in-force values, on a book order or on an armed trigger. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. To give an armed `STOP_LOSS`/`TAKE_PROFIT` a different fired-child time in force, cancel it and create a new one."},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"On-chain `OrderDetails.triggerPrice`. Modifiable — an armed `STOP_LOSS`/`TAKE_PROFIT` can be re-priced in place (no cancel+recreate); restate the post-modify value. Omit for a `LIMIT` order. Required on a `STOP_LOSS`/`TAKE_PROFIT` modify (full restate); a trigger modify that omits it is rejected. The post-modify `limitPx` and `triggerPx` are re-checked against the market's trigger band, so moving the trigger without moving the limit can itself put the pair outside the band (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"limitPx":{"$ref":"#/components/schemas/SignedDecimal","description":"The post-modify worst acceptable execution price. Must be a positive number (> 0). Always required — send the complete intended value even when it is unchanged from the resting order. Changing it loses queue priority; a non-post-only modification whose new price crosses executes immediately. On a `STOP_LOSS`/`TAKE_PROFIT` modify it is the fired child's worst acceptable price and is re-checked against the market's trigger band alongside the post-modify `triggerPx` (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"The post-modify TOTAL order quantity (not remaining). Required for a `LIMIT` modify; omit for a `STOP_LOSS`/`TAKE_PROFIT` modify — a trigger modify restates the signed full-position sentinel (`quantity = ±int256.max`, sign from `isBuy`; protect the whole position). When present, send the complete intended value even when it is unchanged from the resting order. Must be strictly greater than the order's `cumQty` (else `MODIFY_QTY_BELOW_FILLED_ERROR`). A decrease at an unchanged `limitPx` preserves queue priority; an increase loses it."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Post-modify order expiry (`OrderDetails.expiresAfter`). Omit for GTC and IOC orders; omission never inherits the resting value. GTT modifications must send a future value greater than `deadline`. On an armed `GTT` `STOP_LOSS`/`TAKE_PROFIT` it is a restated immutable: restate the trigger's original shared deadline. A trigger's expiry cannot be extended by modification — cancel it and create a new one."},"signature":{"type":"string","description":"Fresh EIP-712 signature over the full post-modify order state — the same `Order` envelope as `createOrder`, with the modified values substituted into `OrderDetails`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required for every modification; replayed nonces are rejected with `INVALID_NONCE_ERROR`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Not modifiable; must match the resting order's signer."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Required EIP-712 signature-validity deadline, signed into the `Order` envelope. It controls acceptance of this modification, not the order's lifetime. Re-signing an armed trigger with a fresh `deadline` does not extend its lifetime, and a deadline that later passes does not disarm it. Use the shared `expiresAfter` to determine a GTT stop's expiry."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}
```

## The LimitModifyOrderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"LimitModifyOrderRequest":{"title":"LimitModifyOrderRequest","allOf":[{"$ref":"#/components/schemas/ModifyOrderRequestBase"},{"type":"object","required":["orderType","reduceOnly","postOnly"],"properties":{"orderType":{"$ref":"#/components/schemas/LimitOrderType","description":"On-chain `OrderDetails.orderType`. Immutable — restate the resting order's value; a modify never converts between `LIMIT` and `STOP_LOSS`/`TAKE_PROFIT`. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. A `STOP_LOSS`/`TAKE_PROFIT` order is modifiable in place (full restate); `orderType` itself stays immutable and is restated at the resting value."},"reduceOnly":{"type":"boolean","description":"Signed OrderDetails.reduceOnly. Required and immutable on LIMIT modifications. Omit for STOP_LOSS/TAKE_PROFIT, including false: the SDK and server reconstruct the fixed signed value false; omission never inherits stored state."},"postOnly":{"type":"boolean","description":"Post-modify maker-only flag, required for LIMIT. Omit for STOP_LOSS/TAKE_PROFIT, including false: the SDK and server reconstruct the fixed signed value false. A post-only LIMIT modification that would cross is rejected with POST_ONLY_WOULD_CROSS_ERROR and leaves the order unchanged."}}}]},"ModifyOrderRequestBase":{"title":"ModifyOrderRequestBase","description":"Modify a resting order using its complete intended post-modify state and a fresh signature and nonce. Omitted fields do not inherit existing values. Target by `orderId` or a non-zero `clientOrderId`. See `POST /v2/modifyOrder` for modifiable fields, priority, and execution behavior.","type":"object","required":["exchangeId","symbol","accountId","isBuy","limitPx","timeInForce","signature","nonce","signerWallet","deadline"],"not":{"anyOf":[{"description":"At least one target identifier is required. If `orderId` is absent, `clientOrderId` must be non-zero.","allOf":[{"not":{"properties":{"orderId":{"type":"string"}},"required":["orderId"]}},{"not":{"properties":{"clientOrderId":{"type":"string"}},"required":["clientOrderId"]}}]}]},"properties":{"orderId":{"type":"string","description":"Reya-assigned order ID of the order to modify. If present, this is the canonical lookup key; `clientOrderId`, when also present, restates the resting order's immutable client id."},"clientOrderId":{"type":"string","description":"Restated client-provided order ID, as a decimal string (`uint64`). Used as the lookup key only when `orderId` is absent, and then it must be non-zero. If `orderId` is present, this field restates the resting order's immutable client id for signing; omit it when the resting order has no client id. Do not send a placeholder value. The modification cannot assign a new `clientOrderId`."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol for the order."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID that owns the order. Immutable; must match the resting order."},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.exchangeId`. Immutable — restate the resting order's value (a mismatch is rejected with `INPUT_VALIDATION_ERROR`)."},"isBuy":{"type":"boolean","description":"Order side. Immutable — restate the resting order's value. Combined with `qty`, sets the signed `OrderDetails.quantity` (int256). A mismatch is rejected with `INPUT_VALIDATION_ERROR`."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"On-chain `OrderDetails.timeInForce` (0 = GTC, 1 = IOC, 2 = GTT). Immutable and REQUIRED — restate the resting order's value; a modify never converts between time-in-force values, on a book order or on an armed trigger. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. To give an armed `STOP_LOSS`/`TAKE_PROFIT` a different fired-child time in force, cancel it and create a new one."},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"On-chain `OrderDetails.triggerPrice`. Modifiable — an armed `STOP_LOSS`/`TAKE_PROFIT` can be re-priced in place (no cancel+recreate); restate the post-modify value. Omit for a `LIMIT` order. Required on a `STOP_LOSS`/`TAKE_PROFIT` modify (full restate); a trigger modify that omits it is rejected. The post-modify `limitPx` and `triggerPx` are re-checked against the market's trigger band, so moving the trigger without moving the limit can itself put the pair outside the band (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"limitPx":{"$ref":"#/components/schemas/SignedDecimal","description":"The post-modify worst acceptable execution price. Must be a positive number (> 0). Always required — send the complete intended value even when it is unchanged from the resting order. Changing it loses queue priority; a non-post-only modification whose new price crosses executes immediately. On a `STOP_LOSS`/`TAKE_PROFIT` modify it is the fired child's worst acceptable price and is re-checked against the market's trigger band alongside the post-modify `triggerPx` (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"The post-modify TOTAL order quantity (not remaining). Required for a `LIMIT` modify; omit for a `STOP_LOSS`/`TAKE_PROFIT` modify — a trigger modify restates the signed full-position sentinel (`quantity = ±int256.max`, sign from `isBuy`; protect the whole position). When present, send the complete intended value even when it is unchanged from the resting order. Must be strictly greater than the order's `cumQty` (else `MODIFY_QTY_BELOW_FILLED_ERROR`). A decrease at an unchanged `limitPx` preserves queue priority; an increase loses it."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Post-modify order expiry (`OrderDetails.expiresAfter`). Omit for GTC and IOC orders; omission never inherits the resting value. GTT modifications must send a future value greater than `deadline`. On an armed `GTT` `STOP_LOSS`/`TAKE_PROFIT` it is a restated immutable: restate the trigger's original shared deadline. A trigger's expiry cannot be extended by modification — cancel it and create a new one."},"signature":{"type":"string","description":"Fresh EIP-712 signature over the full post-modify order state — the same `Order` envelope as `createOrder`, with the modified values substituted into `OrderDetails`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required for every modification; replayed nonces are rejected with `INVALID_NONCE_ERROR`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Not modifiable; must match the resting order's signer."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Required EIP-712 signature-validity deadline, signed into the `Order` envelope. It controls acceptance of this modification, not the order's lifetime. Re-signing an armed trigger with a fresh `deadline` does not extend its lifetime, and a deadline that later passes does not disarm it. Use the shared `expiresAfter` to determine a GTT stop's expiry."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"LimitOrderType":{"type":"string","enum":["LIMIT"]}}}}
```

## The TriggerModifyOrderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TriggerModifyOrderRequest":{"title":"TriggerModifyOrderRequest","allOf":[{"$ref":"#/components/schemas/ModifyOrderRequestBase"},{"type":"object","required":["orderType"],"properties":{"orderType":{"$ref":"#/components/schemas/TriggerOrderType","description":"On-chain `OrderDetails.orderType`. Immutable — restate the resting order's value; a modify never converts between `LIMIT` and `STOP_LOSS`/`TAKE_PROFIT`. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. A `STOP_LOSS`/`TAKE_PROFIT` order is modifiable in place (full restate); `orderType` itself stays immutable and is restated at the resting value."},"reduceOnly":{"not":{},"description":"Must be omitted for TP/SL, including false. The signed value is reconstructed as false."},"postOnly":{"not":{},"description":"Must be omitted for TP/SL, including false. The signed value is reconstructed as false."}}}]},"ModifyOrderRequestBase":{"title":"ModifyOrderRequestBase","description":"Modify a resting order using its complete intended post-modify state and a fresh signature and nonce. Omitted fields do not inherit existing values. Target by `orderId` or a non-zero `clientOrderId`. See `POST /v2/modifyOrder` for modifiable fields, priority, and execution behavior.","type":"object","required":["exchangeId","symbol","accountId","isBuy","limitPx","timeInForce","signature","nonce","signerWallet","deadline"],"not":{"anyOf":[{"description":"At least one target identifier is required. If `orderId` is absent, `clientOrderId` must be non-zero.","allOf":[{"not":{"properties":{"orderId":{"type":"string"}},"required":["orderId"]}},{"not":{"properties":{"clientOrderId":{"type":"string"}},"required":["clientOrderId"]}}]}]},"properties":{"orderId":{"type":"string","description":"Reya-assigned order ID of the order to modify. If present, this is the canonical lookup key; `clientOrderId`, when also present, restates the resting order's immutable client id."},"clientOrderId":{"type":"string","description":"Restated client-provided order ID, as a decimal string (`uint64`). Used as the lookup key only when `orderId` is absent, and then it must be non-zero. If `orderId` is present, this field restates the resting order's immutable client id for signing; omit it when the resting order has no client id. Do not send a placeholder value. The modification cannot assign a new `clientOrderId`."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol for the order."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID that owns the order. Immutable; must match the resting order."},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.exchangeId`. Immutable — restate the resting order's value (a mismatch is rejected with `INPUT_VALIDATION_ERROR`)."},"isBuy":{"type":"boolean","description":"Order side. Immutable — restate the resting order's value. Combined with `qty`, sets the signed `OrderDetails.quantity` (int256). A mismatch is rejected with `INPUT_VALIDATION_ERROR`."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"On-chain `OrderDetails.timeInForce` (0 = GTC, 1 = IOC, 2 = GTT). Immutable and REQUIRED — restate the resting order's value; a modify never converts between time-in-force values, on a book order or on an armed trigger. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. To give an armed `STOP_LOSS`/`TAKE_PROFIT` a different fired-child time in force, cancel it and create a new one."},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"On-chain `OrderDetails.triggerPrice`. Modifiable — an armed `STOP_LOSS`/`TAKE_PROFIT` can be re-priced in place (no cancel+recreate); restate the post-modify value. Omit for a `LIMIT` order. Required on a `STOP_LOSS`/`TAKE_PROFIT` modify (full restate); a trigger modify that omits it is rejected. The post-modify `limitPx` and `triggerPx` are re-checked against the market's trigger band, so moving the trigger without moving the limit can itself put the pair outside the band (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"limitPx":{"$ref":"#/components/schemas/SignedDecimal","description":"The post-modify worst acceptable execution price. Must be a positive number (> 0). Always required — send the complete intended value even when it is unchanged from the resting order. Changing it loses queue priority; a non-post-only modification whose new price crosses executes immediately. On a `STOP_LOSS`/`TAKE_PROFIT` modify it is the fired child's worst acceptable price and is re-checked against the market's trigger band alongside the post-modify `triggerPx` (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"The post-modify TOTAL order quantity (not remaining). Required for a `LIMIT` modify; omit for a `STOP_LOSS`/`TAKE_PROFIT` modify — a trigger modify restates the signed full-position sentinel (`quantity = ±int256.max`, sign from `isBuy`; protect the whole position). When present, send the complete intended value even when it is unchanged from the resting order. Must be strictly greater than the order's `cumQty` (else `MODIFY_QTY_BELOW_FILLED_ERROR`). A decrease at an unchanged `limitPx` preserves queue priority; an increase loses it."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Post-modify order expiry (`OrderDetails.expiresAfter`). Omit for GTC and IOC orders; omission never inherits the resting value. GTT modifications must send a future value greater than `deadline`. On an armed `GTT` `STOP_LOSS`/`TAKE_PROFIT` it is a restated immutable: restate the trigger's original shared deadline. A trigger's expiry cannot be extended by modification — cancel it and create a new one."},"signature":{"type":"string","description":"Fresh EIP-712 signature over the full post-modify order state — the same `Order` envelope as `createOrder`, with the modified values substituted into `OrderDetails`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required for every modification; replayed nonces are rejected with `INVALID_NONCE_ERROR`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Not modifiable; must match the resting order's signer."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Required EIP-712 signature-validity deadline, signed into the `Order` envelope. It controls acceptance of this modification, not the order's lifetime. Re-signing an armed trigger with a fresh `deadline` does not extend its lifetime, and a deadline that later passes does not disarm it. Use the shared `expiresAfter` to determine a GTT stop's expiry."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"TriggerOrderType":{"type":"string","enum":["STOP_LOSS","TAKE_PROFIT"]}}}}
```

## The ModifyOrderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ModifyOrderRequest":{"title":"ModifyOrderRequest","description":"Modify a resting order using its complete intended post-modify state and a fresh signature and nonce. Omitted fields do not inherit existing values. Target by `orderId` or a non-zero `clientOrderId`. See `POST /v2/modifyOrder` for modifiable fields, priority, and execution behavior.","oneOf":[{"$ref":"#/components/schemas/LimitModifyOrderRequest"},{"$ref":"#/components/schemas/TriggerModifyOrderRequest"}]},"LimitModifyOrderRequest":{"title":"LimitModifyOrderRequest","allOf":[{"$ref":"#/components/schemas/ModifyOrderRequestBase"},{"type":"object","required":["orderType","reduceOnly","postOnly"],"properties":{"orderType":{"$ref":"#/components/schemas/LimitOrderType","description":"On-chain `OrderDetails.orderType`. Immutable — restate the resting order's value; a modify never converts between `LIMIT` and `STOP_LOSS`/`TAKE_PROFIT`. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. A `STOP_LOSS`/`TAKE_PROFIT` order is modifiable in place (full restate); `orderType` itself stays immutable and is restated at the resting value."},"reduceOnly":{"type":"boolean","description":"Signed OrderDetails.reduceOnly. Required and immutable on LIMIT modifications. Omit for STOP_LOSS/TAKE_PROFIT, including false: the SDK and server reconstruct the fixed signed value false; omission never inherits stored state."},"postOnly":{"type":"boolean","description":"Post-modify maker-only flag, required for LIMIT. Omit for STOP_LOSS/TAKE_PROFIT, including false: the SDK and server reconstruct the fixed signed value false. A post-only LIMIT modification that would cross is rejected with POST_ONLY_WOULD_CROSS_ERROR and leaves the order unchanged."}}}]},"ModifyOrderRequestBase":{"title":"ModifyOrderRequestBase","description":"Modify a resting order using its complete intended post-modify state and a fresh signature and nonce. Omitted fields do not inherit existing values. Target by `orderId` or a non-zero `clientOrderId`. See `POST /v2/modifyOrder` for modifiable fields, priority, and execution behavior.","type":"object","required":["exchangeId","symbol","accountId","isBuy","limitPx","timeInForce","signature","nonce","signerWallet","deadline"],"not":{"anyOf":[{"description":"At least one target identifier is required. If `orderId` is absent, `clientOrderId` must be non-zero.","allOf":[{"not":{"properties":{"orderId":{"type":"string"}},"required":["orderId"]}},{"not":{"properties":{"clientOrderId":{"type":"string"}},"required":["clientOrderId"]}}]}]},"properties":{"orderId":{"type":"string","description":"Reya-assigned order ID of the order to modify. If present, this is the canonical lookup key; `clientOrderId`, when also present, restates the resting order's immutable client id."},"clientOrderId":{"type":"string","description":"Restated client-provided order ID, as a decimal string (`uint64`). Used as the lookup key only when `orderId` is absent, and then it must be non-zero. If `orderId` is present, this field restates the resting order's immutable client id for signing; omit it when the resting order has no client id. Do not send a placeholder value. The modification cannot assign a new `clientOrderId`."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol for the order."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID that owns the order. Immutable; must match the resting order."},"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger","description":"On-chain `OrderDetails.exchangeId`. Immutable — restate the resting order's value (a mismatch is rejected with `INPUT_VALIDATION_ERROR`)."},"isBuy":{"type":"boolean","description":"Order side. Immutable — restate the resting order's value. Combined with `qty`, sets the signed `OrderDetails.quantity` (int256). A mismatch is rejected with `INPUT_VALIDATION_ERROR`."},"timeInForce":{"$ref":"#/components/schemas/TimeInForce","description":"On-chain `OrderDetails.timeInForce` (0 = GTC, 1 = IOC, 2 = GTT). Immutable and REQUIRED — restate the resting order's value; a modify never converts between time-in-force values, on a book order or on an armed trigger. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. To give an armed `STOP_LOSS`/`TAKE_PROFIT` a different fired-child time in force, cancel it and create a new one."},"triggerPx":{"$ref":"#/components/schemas/SignedDecimal","description":"On-chain `OrderDetails.triggerPrice`. Modifiable — an armed `STOP_LOSS`/`TAKE_PROFIT` can be re-priced in place (no cancel+recreate); restate the post-modify value. Omit for a `LIMIT` order. Required on a `STOP_LOSS`/`TAKE_PROFIT` modify (full restate); a trigger modify that omits it is rejected. The post-modify `limitPx` and `triggerPx` are re-checked against the market's trigger band, so moving the trigger without moving the limit can itself put the pair outside the band (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"limitPx":{"$ref":"#/components/schemas/SignedDecimal","description":"The post-modify worst acceptable execution price. Must be a positive number (> 0). Always required — send the complete intended value even when it is unchanged from the resting order. Changing it loses queue priority; a non-post-only modification whose new price crosses executes immediately. On a `STOP_LOSS`/`TAKE_PROFIT` modify it is the fired child's worst acceptable price and is re-checked against the market's trigger band alongside the post-modify `triggerPx` (`TRIGGER_LIMIT_OUTSIDE_BAND_ERROR`)."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"The post-modify TOTAL order quantity (not remaining). Required for a `LIMIT` modify; omit for a `STOP_LOSS`/`TAKE_PROFIT` modify — a trigger modify restates the signed full-position sentinel (`quantity = ±int256.max`, sign from `isBuy`; protect the whole position). When present, send the complete intended value even when it is unchanged from the resting order. Must be strictly greater than the order's `cumQty` (else `MODIFY_QTY_BELOW_FILLED_ERROR`). A decrease at an unchanged `limitPx` preserves queue priority; an increase loses it."},"expiresAfter":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Post-modify order expiry (`OrderDetails.expiresAfter`). Omit for GTC and IOC orders; omission never inherits the resting value. GTT modifications must send a future value greater than `deadline`. On an armed `GTT` `STOP_LOSS`/`TAKE_PROFIT` it is a restated immutable: restate the trigger's original shared deadline. A trigger's expiry cannot be extended by modification — cancel it and create a new one."},"signature":{"type":"string","description":"Fresh EIP-712 signature over the full post-modify order state — the same `Order` envelope as `createOrder`, with the modified values substituted into `OrderDetails`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required for every modification; replayed nonces are rejected with `INVALID_NONCE_ERROR`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Not modifiable; must match the resting order's signer."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Required EIP-712 signature-validity deadline, signed into the `Order` envelope. It controls acceptance of this modification, not the order's lifetime. Re-signing an armed trigger with a fresh `deadline` does not extend its lifetime, and a deadline that later passes does not disarm it. Use the shared `expiresAfter` to determine a GTT stop's expiry."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"LimitOrderType":{"type":"string","enum":["LIMIT"]},"TriggerModifyOrderRequest":{"title":"TriggerModifyOrderRequest","allOf":[{"$ref":"#/components/schemas/ModifyOrderRequestBase"},{"type":"object","required":["orderType"],"properties":{"orderType":{"$ref":"#/components/schemas/TriggerOrderType","description":"On-chain `OrderDetails.orderType`. Immutable — restate the resting order's value; a modify never converts between `LIMIT` and `STOP_LOSS`/`TAKE_PROFIT`. A mismatch is rejected with `INPUT_VALIDATION_ERROR`. A `STOP_LOSS`/`TAKE_PROFIT` order is modifiable in place (full restate); `orderType` itself stays immutable and is restated at the resting value."},"reduceOnly":{"not":{},"description":"Must be omitted for TP/SL, including false. The signed value is reconstructed as false."},"postOnly":{"not":{},"description":"Must be omitted for TP/SL, including false. The signed value is reconstructed as false."}}}]},"TriggerOrderType":{"type":"string","enum":["STOP_LOSS","TAKE_PROFIT"]}}}}
```

## The ModifyOrderResponse object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ModifyOrderResponse":{"title":"ModifyOrderResponse","description":"Result of a modification, with the same orderId as before. Fields report immediate execution and resulting order state. See POST /v2/modifyOrder for outcomes and POST /v2/createOrder for shared fill-correlation rules.","type":"object","required":["status","orderId"],"properties":{"status":{"$ref":"#/components/schemas/OrderStatus"},"execQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Quantity filled immediately by this modification. Present only when the modification crossed and executed."},"cumQty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Total executed quantity across the order's lifetime, including fills from before the modification."},"orderId":{"type":"string","description":"Order ID — unchanged by the modification (the same ID the order had before)."},"clientOrderId":{"type":"string","description":"Client-provided order ID preserved from order creation, as a decimal string (`uint64`)."},"cancelReason":{"$ref":"#/components/schemas/CancelReason","description":"Machine-readable reason the modified order was cancelled. Present if and only if `status` is `CANCELLED` — for a self-crossing non-post-only modify this is `SELF_TRADE_PREVENTION`. Omitted entirely otherwise."},"cancelReasonMessage":{"type":"string","description":"Human-readable explanation of `cancelReason`. Present only when `cancelReason` is present."},"firstFillId":{"type":"string","description":"First fill ID produced by this request. With fillCount, identifies [firstFillId, firstFillId + fillCount - 1]. Omitted if no fill occurred. See POST /v2/createOrder, Responses and fill correlation, for joining responses to streamed executions."},"fillCount":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of fills produced by this request, starting at firstFillId. Omitted if no fill occurred; positive whenever present."}},"additionalProperties":true},"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"CancelReason":{"title":"CancelReason","type":"string","enum":["NO_LIQUIDITY","IOC_REMAINDER","SELF_TRADE_PREVENTION","PROTECTIVE_SELF_TRADE_SWEEP","GTT_EXPIRED","USER_CANCEL","MASS_CANCEL","CANCEL_ALL_AFTER","FEED_RESET","RISK_CANCELLED","RISK_REJECTED","OCO_SIBLING_FIRED","POSITION_CLOSED"],"description":"Machine-readable cancellation reason. Present only on CANCELLED orders and may be omitted when unavailable. See Cancellation reasons in the REST API Order Entry section for per-code meanings and handling."},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The CancelOrderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CancelOrderRequest":{"title":"CancelOrderRequest","description":"Cancel a live order by orderId, or a non-zero clientOrderId when orderId is absent. Supports spot, perp, and protective stops. See POST /v2/cancelOrder for signer requirements.","type":"object","required":["symbol","signature","accountId","nonce","deadline"],"not":{"description":"At least one target identifier is required. If `orderId` is absent, `clientOrderId` must be non-zero.","allOf":[{"not":{"properties":{"orderId":{"type":"string"}},"required":["orderId"]}},{"not":{"properties":{"clientOrderId":{"type":"string"}},"required":["clientOrderId"]}}]},"properties":{"orderId":{"type":"string","description":"Reya-assigned order ID to cancel, as returned by `CreateOrderResponse`. Provide `orderId`, or a non-zero `clientOrderId` when `orderId` is absent. If both are supplied, `orderId` takes precedence and `clientOrderId` is ignored."},"clientOrderId":{"type":"string","description":"Client-provided order ID for tracking and correlation, as a decimal string (`uint64`). Used as the lookup key only when `orderId` is absent, and then it must be non-zero. This is the same clientOrderId provided in CreateOrderRequest."},"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID that owns the order."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Market symbol for the order."},"signature":{"type":"string","description":"EIP-712 signature over the `OrderCancel(uint64 verifyingChainId, uint64 deadline, OrderCancelDetails cancel)` envelope. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required per request; replayed nonces are rejected with `INVALID_NONCE_ERROR`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces)."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Signature-validity deadline signed into the OrderCancel envelope. Requests received after this timestamp are rejected."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"}}}}
```

## The CancelOrderResponse object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CancelOrderResponse":{"title":"CancelOrderResponse","type":"object","required":["status","orderId"],"properties":{"status":{"$ref":"#/components/schemas/OrderStatus"},"orderId":{"type":"string","description":"Cancelled order ID"},"clientOrderId":{"type":"string","description":"Client-provided order ID echoed back from the request, as a decimal string (`uint64`)."}},"additionalProperties":true},"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."}}}}
```

## The MassCancelRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"MassCancelRequest":{"title":"MassCancelRequest","type":"object","required":["signature","nonce","accountId","deadline"],"properties":{"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID to cancel orders for."},"symbol":{"$ref":"#/components/schemas/Symbol","description":"Symbol to cancel orders for. If not specified, cancels orders for all symbols."},"signature":{"type":"string","description":"EIP-712 signature over the `MassCancel(uint64 verifyingChainId, uint64 deadline, MassCancelDetails massCancel)` envelope. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required per request; replayed nonces are rejected with `INVALID_NONCE_ERROR`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces)."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Signature-validity deadline signed into the MassCancel envelope. Requests received after this timestamp are rejected."}},"additionalProperties":true,"description":"Request to cancel all orders matching the specified filters"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"}}}}
```

## The MassCancelResponse object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"MassCancelResponse":{"title":"MassCancelResponse","type":"object","required":["cancelledCount"],"properties":{"cancelledCount":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of orders that were cancelled"}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The CancelAllAfterRequest object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CancelAllAfterRequest":{"title":"CancelAllAfterRequest","description":"Arm, refresh, or disarm the account's cancel-all-after countdown using a signed request. See POST /v2/cancelAllAfter for affected orders, refresh rules, disconnect behavior, and throttling.","type":"object","required":["accountId","timeoutMs","signature","nonce","signerWallet","deadline"],"properties":{"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID whose open orders are covered by the countdown."},"timeoutMs":{"$ref":"#/components/schemas/UnsignedInteger","description":"Countdown duration in milliseconds: 0 disarms; 5000–60000 arms or refreshes. Other values return INPUT_VALIDATION_ERROR. Signed into CancelAllAfterDetails. See POST /v2/cancelAllAfter for countdown and throttling behavior."},"signature":{"type":"string","description":"EIP-712 signature over the `CancelAllAfter(uint64 verifyingChainId, uint64 deadline, CancelAllAfterDetails cancelAllAfter)` envelope, where `CancelAllAfterDetails(uint64 accountId, uint64 timeoutMs, uint64 nonce)`. See the EIP-712 signing reference in the Reya docs (https://docs.reya.xyz/developers/readme/signatures-and-nonces) for the exact typehash string and signing algorithm."},"nonce":{"type":"string","description":"Monotonically increasing per-signer nonce. A fresh nonce is required on every arm/refresh/disarm call; replayed nonces are rejected with `INVALID_NONCE_ERROR`."},"signerWallet":{"$ref":"#/components/schemas/Address","description":"Address of the signer that produced the EIP-712 signature. Required on `cancelAllAfter` and must match the signature. Omit `signerWallet` from `cancelOrder` and `cancelAll` requests."},"deadline":{"$ref":"#/components/schemas/UnsignedInteger","description":"Unix seconds. Signature-validity deadline signed into the CancelAllAfter envelope. It controls request acceptance, not countdown expiry; see timeoutMs and the response's triggerAt."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}
```

## The CancelAllAfterResponse object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CancelAllAfterResponse":{"title":"CancelAllAfterResponse","type":"object","required":["accountId","timeoutMs"],"properties":{"accountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Account ID the countdown applies to, echoed from the request."},"timeoutMs":{"$ref":"#/components/schemas/UnsignedInteger","description":"Effective countdown duration in milliseconds; `0` means the switch is now disarmed."},"triggerAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Advisory Unix timestamp in milliseconds at which the countdown will fire unless refreshed or disarmed. The countdown starts when the request is accepted, using the requested `timeoutMs`. Use this timestamp for display and schedule refreshes well before expiry. Omitted when `timeoutMs` is `0`."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The Depth object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Depth":{"title":"Depth","description":"Deprecated compatibility shape for depth payloads. New REST integrations should use DepthSnapshot; new WebSocket integrations should use the exact DepthSnapshot and DepthUpdate exports. Wire endpoints reference those variants with REST snapshots capped at 1,000 levels per side, WebSocket snapshots capped at 100 levels per side, and updates describing changes to the bounded view.","deprecated":true,"type":"object","required":["symbol","type","bids","asks","updatedAt"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"type":{"$ref":"#/components/schemas/DepthType"},"bids":{"type":"array","description":"Bid side levels aggregated by price, sorted descending by price","items":{"$ref":"#/components/schemas/Level"}},"asks":{"type":"array","description":"Ask side levels aggregated by price, sorted ascending by price","items":{"$ref":"#/components/schemas/Level"}},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp in milliseconds associated with the latest depth state. Comparable across markets. It is not a feed-liveness signal: a quiet market may retain an old timestamp."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"DepthType":{"title":"DepthType","type":"string","enum":["SNAPSHOT","UPDATE"],"description":"SNAPSHOT replaces the current depth view; UPDATE applies changed price levels to that view. See the streaming API marketDepth channel for view limits, absolute quantities, boundary changes, and update handling. REST snapshot limits are documented on GET /v2/market/{symbol}/depth."},"Level":{"title":"Level","type":"object","required":["px","qty"],"properties":{"px":{"$ref":"#/components/schemas/SignedDecimal","description":"Price level"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Aggregated quantity at this price level"}},"additionalProperties":true},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The DepthType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"DepthType":{"title":"DepthType","type":"string","enum":["SNAPSHOT","UPDATE"],"description":"SNAPSHOT replaces the current depth view; UPDATE applies changed price levels to that view. See the streaming API marketDepth channel for view limits, absolute quantities, boundary changes, and update handling. REST snapshot limits are documented on GET /v2/market/{symbol}/depth."}}}}
```

## The DepthSnapshot object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"DepthSnapshot":{"title":"DepthSnapshot","description":"A bounded depth snapshot. Each side contains at most the 1,000 best price levels.","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/DepthBase"},{"type":"object","required":["type","bids","asks"],"properties":{"type":{"$ref":"#/components/schemas/DepthSnapshotType"},"bids":{"type":"array","description":"At most the 1,000 highest bid levels, aggregated by price and sorted descending","maxItems":1000,"items":{"$ref":"#/components/schemas/Level"}},"asks":{"type":"array","description":"At most the 1,000 lowest ask levels, aggregated by price and sorted ascending","maxItems":1000,"items":{"$ref":"#/components/schemas/Level"}}}}]},"DepthBase":{"title":"DepthBase","type":"object","required":["symbol","updatedAt"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp in milliseconds associated with the latest depth state. Comparable across markets. It is not a feed-liveness signal: a quiet market may retain an old timestamp."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"DepthSnapshotType":{"title":"DepthSnapshotType","type":"string","enum":["SNAPSHOT"],"description":"Literal discriminator for a bounded depth snapshot."},"Level":{"title":"Level","type":"object","required":["px","qty"],"properties":{"px":{"$ref":"#/components/schemas/SignedDecimal","description":"Price level"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Aggregated quantity at this price level"}},"additionalProperties":true},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The ServerErrorCode object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ServerErrorCode":{"title":"ServerErrorCode","type":"string","enum":["INTERNAL_SERVER_ERROR"],"description":"Standardized error codes for API responses"}}}}
```

## The Symbol object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"}}}}
```

## The UnsignedInteger object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The UnsignedDecimal object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The RequestErrorCode object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"RequestErrorCode":{"title":"RequestErrorCode","type":"string","enum":["SYMBOL_NOT_FOUND_ERROR","NO_ACCOUNTS_FOUND_ERROR","NO_PRICES_FOUND_FOR_SYMBOL_ERROR","INPUT_VALIDATION_ERROR","CREATE_ORDER_OTHER_ERROR","CANCEL_ORDER_OTHER_ERROR","ORDER_DEADLINE_PASSED_ERROR","ORDER_DEADLINE_TOO_HIGH_ERROR","INVALID_NONCE_ERROR","UNAVAILABLE_MATCHING_ENGINE_ERROR","UNAUTHORIZED_SIGNATURE_ERROR","NUMERIC_OVERFLOW_ERROR","CANCEL_ALL_AFTER_OTHER_ERROR","ORDER_NOT_FOUND_ERROR","POST_ONLY_WOULD_CROSS_ERROR","MODIFY_QTY_BELOW_FILLED_ERROR","EMPTY_MODIFY_ERROR","MODIFY_ORDER_OTHER_ERROR","RATE_LIMITED_ERROR","INSUFFICIENT_BALANCE_ERROR","PRICE_QTY_BOUNDS_ERROR","SERVICE_DISABLED_ERROR","UNAUTHORIZED_ACCOUNT_ERROR","TRADING_HALTED_ERROR","DUPLICATE_CLIENT_ORDER_ID_ERROR","ACCOUNT_BELOW_LIQUIDATION_MARGIN_ERROR","ACCOUNT_BELOW_INITIAL_MARGIN_ERROR","OPEN_INTEREST_CAP_ERROR","OPEN_INTEREST_BUDGET_ERROR","REDUCE_ONLY_CONDITION_NOT_MET_ERROR","CROSSING_ORDERS_TEMPORARILY_UNAVAILABLE_ERROR","TRIGGER_IOC_MUST_NOT_EXPIRE_ERROR","TRIGGER_LIMIT_OUTSIDE_BAND_ERROR","TRIGGER_ALREADY_EXISTS_ERROR","ORDER_EXPIRES_TOO_SOON_ERROR","OPEN_ORDER_COUNT_EXCEEDED_ERROR","OPEN_ORDER_NOTIONAL_EXCEEDED_ERROR","CAPACITY_LIMITED_ERROR","NOT_WHITELISTED_ERROR","ACCOUNT_SUSPENDED_ERROR","UNAVAILABLE_ACCOUNT_OWNER_ERROR"],"description":"Machine-readable request rejection code. REST returns HTTP 400; the order-entry WebSocket returns the same code in its correlated error response. See the REST API HTTP 400 response reference for per-code meanings and retry guidance."}}}}
```

## The SignedDecimal object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The Asset object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Asset":{"title":"Asset","type":"string","pattern":"^[A-Za-z0-9]+$"}}}}
```

## The TierType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TierType":{"title":"TierType","type":"string","enum":["REGULAR","VIP"],"description":"Fee tier type (REGULAR = Standard tier, VIP = VIP tier)"}}}}
```

## The Side object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"}}}}
```

## The ExecutionType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionType":{"title":"ExecutionType","type":"string","enum":["ORDER_MATCH","LIQUIDATION","ADL","MARKET_CLOSE"],"description":"Type of execution. MARKET_CLOSE is the terminal execution used to close residual positions when a market is force-closed."}}}}
```

## The PerpExecution object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"PerpExecution":{"title":"PerpExecution","type":"object","description":"A settled perp execution. Maker-side fields are optional. They are always omitted for ADL and MARKET_CLOSE executions, which are single-sided and have no maker, and can also be absent on legacy executions.","required":["exchangeId","symbol","takerAccountId","qty","side","takerFee","price","type","timestamp","sequenceNumber"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty). Absent for ADL and MARKET_CLOSE executions, which have no maker, and when no counterparty is available on a legacy execution."},"takerOrderId":{"type":"string","description":"Order ID for the taker. Absent for legacy V2 executions and omitted when not meaningful."},"makerOrderId":{"type":"string","description":"Order ID for the maker. Absent for legacy V2, ADL, and MARKET_CLOSE executions and omitted when not meaningful."},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"side":{"$ref":"#/components/schemas/Side","description":"Execution side from the taker perspective for ORDER_MATCH executions."},"price":{"$ref":"#/components/schemas/SignedDecimal"},"takerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Gross taker fee debit in rUSD (signed; positive means the taker paid a fee). When a fee breakdown is present, this equals `protocolFeeCredit + referrerFeeCredit + takerRebateCredit + poolFeeCredit`."},"protocolFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Protocol component of `takerFee`, in rUSD. Present when the execution includes a fee breakdown; omitted on older executions."},"referrerFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Referral component of `takerFee`, in rUSD. Zero when the taker has no referrer. Present when the execution includes a fee breakdown; omitted on older executions."},"takerRebateCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Rebate component of `takerFee`, in rUSD. It is part of the gross taker debit and is not necessarily an immediate credit back to the taker. Present when the execution includes a fee breakdown; omitted on older executions."},"poolFeeCredit":{"$ref":"#/components/schemas/SignedDecimal","description":"Passive-pool component of `takerFee`, in rUSD. Present when the execution includes a fee breakdown; omitted on older executions."},"makerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Signed net maker fee in rUSD (negative means rebate). Available only on older executions with a recorded maker fee or rebate. Omitted on executions with the current taker-fee breakdown and on ADL and MARKET_CLOSE executions."},"takerOpeningFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Opening fee portion of the taker fee in rUSD. Absent for position-extending executions."},"makerOpeningFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Opening portion of `makerFee`, in rUSD. Omitted when `makerFee` is absent and on position-extending executions."},"type":{"$ref":"#/components/schemas/ExecutionType"},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every perp execution in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution with the fill range reported by order responses and order updates."},"takerRealizedPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Realized taker PnL from this execution in rUSD (takerPriceVariationPnl + takerFundingPnl). Absent for position-extending executions."},"makerRealizedPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Realized maker PnL from this execution in rUSD (makerPriceVariationPnl + makerFundingPnl). Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."},"takerPriceVariationPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Taker PnL component from price movement in rUSD. Absent for position-extending executions."},"makerPriceVariationPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Maker PnL component from price movement in rUSD. Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."},"takerFundingPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Taker PnL component from funding payments in rUSD. Absent for position-extending executions."},"makerFundingPnl":{"$ref":"#/components/schemas/SignedDecimal","description":"Maker PnL component from funding payments in rUSD. Absent when counterparty state is unavailable, the execution is position-extending, or the execution is ADL or MARKET_CLOSE."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionType":{"title":"ExecutionType","type":"string","enum":["ORDER_MATCH","LIQUIDATION","ADL","MARKET_CLOSE"],"description":"Type of execution. MARKET_CLOSE is the terminal execution used to close residual positions when a market is force-closed."}}}}
```

## The PaginationMeta object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"PaginationMeta":{"title":"PaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"endTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the last result in response order, in milliseconds. Descending endpoints return newest-first, so this is the oldest returned timestamp and can be used as the next page's endTime boundary."},"startTime":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp of the first result in response order, in milliseconds. Descending endpoints return newest-first, so this is the newest returned timestamp."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The DepthBase object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"DepthBase":{"title":"DepthBase","type":"object","required":["symbol","updatedAt"],"properties":{"symbol":{"$ref":"#/components/schemas/Symbol"},"updatedAt":{"$ref":"#/components/schemas/UnsignedInteger","description":"Timestamp in milliseconds associated with the latest depth state. Comparable across markets. It is not a feed-liveness signal: a quiet market may retain an old timestamp."}},"additionalProperties":true},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```

## The DepthSnapshotType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"DepthSnapshotType":{"title":"DepthSnapshotType","type":"string","enum":["SNAPSHOT"],"description":"Literal discriminator for a bounded depth snapshot."}}}}
```

## The Level object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Level":{"title":"Level","type":"object","required":["px","qty"],"properties":{"px":{"$ref":"#/components/schemas/SignedDecimal","description":"Price level"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal","description":"Aggregated quantity at this price level"}},"additionalProperties":true},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"}}}}
```

## The SpotExecution object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"SpotExecution":{"title":"SpotExecution","type":"object","required":["symbol","takerAccountId","makerAccountId","qty","side","takerFee","price","type","timestamp","sequenceNumber"],"properties":{"exchangeId":{"$ref":"#/components/schemas/UnsignedInteger"},"symbol":{"$ref":"#/components/schemas/Symbol"},"takerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Taker account ID"},"makerAccountId":{"$ref":"#/components/schemas/UnsignedInteger","description":"Maker account ID (counterparty)"},"takerOrderId":{"type":"string","description":"Order ID for the taker"},"makerOrderId":{"type":"string","description":"Order ID for the maker"},"side":{"$ref":"#/components/schemas/Side"},"qty":{"$ref":"#/components/schemas/UnsignedDecimal"},"price":{"$ref":"#/components/schemas/SignedDecimal"},"takerFee":{"$ref":"#/components/schemas/SignedDecimal","description":"Signed taker fee impact in rUSD. Positive means the taker paid a fee."},"type":{"$ref":"#/components/schemas/ExecutionType"},"timestamp":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution timestamp (milliseconds)"},"sequenceNumber":{"$ref":"#/components/schemas/UnsignedInteger","description":"Execution sequence number, increases by 1 for every spot execution in reya chain"},"fillId":{"type":"string","description":"Stable fill identifier. Use it to correlate the execution with the fill range reported by order responses and order updates."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0},"Symbol":{"title":"Symbol","type":"string","pattern":"^[A-Za-z0-9]+$","description":"Trading symbol (e.g., BTCRUSDPERP, WETHRUSD)"},"Side":{"title":"Side","type":"string","enum":["B","A"],"description":"Order side (B = Buy/Bid, A = Ask/Sell)"},"UnsignedDecimal":{"title":"UnsignedDecimal","type":"string","pattern":"^\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"SignedDecimal":{"title":"SignedDecimal","type":"string","pattern":"^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$"},"ExecutionType":{"title":"ExecutionType","type":"string","enum":["ORDER_MATCH","LIQUIDATION","ADL","MARKET_CLOSE"],"description":"Type of execution. MARKET_CLOSE is the terminal execution used to close residual positions when a market is force-closed."}}}}
```

## The ExecutionBustReasonNameOnly object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonNameOnly":{"title":"ExecutionBustReasonNameOnly","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidSignature","SignatureInvalid","SignatureExpired","SmallOrderSize","DustyOrderSize","InvalidFilledExposures","StorkPayloadOlderThanLatest","ZeroSlTpOrderSize"]}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonAccountNotFound object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonAccountNotFound":{"title":"ExecutionBustReasonAccountNotFound","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountNotFound"]},"accountId":{"type":"integer","description":"Account identifier that does not exist."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonExchangeNotFound object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonExchangeNotFound":{"title":"ExecutionBustReasonExchangeNotFound","type":"object","required":["exchangeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ExchangeNotFound"]},"exchangeId":{"type":"integer","description":"Exchange identifier that does not exist."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonMarketNotFound object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonMarketNotFound":{"title":"ExecutionBustReasonMarketNotFound","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketNotFound"]},"marketId":{"type":"integer","description":"Market identifier that does not exist."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonUnauthorized object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonUnauthorized":{"title":"ExecutionBustReasonUnauthorized","type":"object","required":["address","reasonName"],"properties":{"reasonName":{"type":"string","enum":["Unauthorized"]},"address":{"type":"string","description":"Address that is not authorized."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonUnauthorizedSigner object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonUnauthorizedSigner":{"title":"ExecutionBustReasonUnauthorizedSigner","type":"object","required":["signer","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedSigner"]},"signer":{"type":"string","description":"Signer address that is not authorized to trade for the account."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonUnauthorizedMatchingEnginePublisher object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonUnauthorizedMatchingEnginePublisher":{"title":"ExecutionBustReasonUnauthorizedMatchingEnginePublisher","type":"object","required":["publisher","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedMatchingEnginePublisher"]},"publisher":{"type":"string","description":"Address associated with the publisher authorization failure."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonSignerNonceAlreadyUsed object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonSignerNonceAlreadyUsed":{"title":"ExecutionBustReasonSignerNonceAlreadyUsed","type":"object","required":["signer","nonce","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SignerNonceAlreadyUsed"]},"signer":{"type":"string","description":"Signer address that already used the nonce."},"nonce":{"type":"string","description":"Signer nonce that was already consumed. Kept as a string because contract nonces are uint256."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonMarkPriceStale object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonMarkPriceStale":{"title":"ExecutionBustReasonMarkPriceStale","type":"object","required":["marketId","priceTimestamp","blockTimestamp","maxStaleDuration","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarkPriceStale"]},"marketId":{"type":"integer","description":"Market identifier whose mark price is stale."},"priceTimestamp":{"type":"integer","description":"Timestamp carried by the price update."},"blockTimestamp":{"type":"integer","description":"Block timestamp observed by the contracts."},"maxStaleDuration":{"type":"integer","description":"Maximum allowed price staleness in seconds."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonPassivePerpPriceDeviationTooLarge object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonPassivePerpPriceDeviationTooLarge":{"title":"ExecutionBustReasonPassivePerpPriceDeviationTooLarge","type":"object","required":["marketId","price","referencePrice","maxDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"marketId":{"type":"integer","description":"Market identifier whose fill price deviated too far."},"price":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"referencePrice":{"type":"string","description":"Reference price decoded from an 18-decimal fixed-point contract value."},"maxDeviation":{"type":"string","description":"Maximum allowed price deviation decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonSpotPriceDeviationTooLarge object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonSpotPriceDeviationTooLarge":{"title":"ExecutionBustReasonSpotPriceDeviationTooLarge","type":"object","required":["fillPrice","oraclePrice","oracleDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"oraclePrice":{"type":"string","description":"Oracle price decoded from an 18-decimal fixed-point contract value."},"oracleDeviation":{"type":"string","description":"Oracle deviation threshold decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonPriceDeviationTooLarge object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonPriceDeviationTooLarge":{"title":"ExecutionBustReasonPriceDeviationTooLarge","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonPassivePerpPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonSpotPriceDeviationTooLarge"}],"description":"PriceDeviationTooLarge has two contract shapes: passive-perp includes marketId/price/referencePrice/maxDeviation, while spot/core includes fillPrice/oraclePrice/oracleDeviation."},"ExecutionBustReasonPassivePerpPriceDeviationTooLarge":{"title":"ExecutionBustReasonPassivePerpPriceDeviationTooLarge","type":"object","required":["marketId","price","referencePrice","maxDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"marketId":{"type":"integer","description":"Market identifier whose fill price deviated too far."},"price":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"referencePrice":{"type":"string","description":"Reference price decoded from an 18-decimal fixed-point contract value."},"maxDeviation":{"type":"string","description":"Maximum allowed price deviation decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSpotPriceDeviationTooLarge":{"title":"ExecutionBustReasonSpotPriceDeviationTooLarge","type":"object","required":["fillPrice","oraclePrice","oracleDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"oraclePrice":{"type":"string","description":"Oracle price decoded from an 18-decimal fixed-point contract value."},"oracleDeviation":{"type":"string","description":"Oracle deviation threshold decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonStalePriceDetected object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonStalePriceDetected":{"title":"ExecutionBustReasonStalePriceDetected","type":"object","required":["nodeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["StalePriceDetected"]},"nodeId":{"type":"string","description":"Oracle node identifier that returned a stale price."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonAccountBelowIM object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonAccountBelowIM":{"title":"ExecutionBustReasonAccountBelowIM","type":"object","required":["accountId","delta","shortfall","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountBelowIM"]},"accountId":{"type":"integer","description":"Account identifier that is below initial margin."},"delta":{"type":"string","description":"Signed initial-margin delta decoded from an 18-decimal fixed-point contract value."},"shortfall":{"type":"string","description":"Absolute initial-margin shortfall decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonReduceOnlyConditionFailed object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonReduceOnlyConditionFailed":{"title":"ExecutionBustReasonReduceOnlyConditionFailed","type":"object","required":["marketId","accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ReduceOnlyConditionFailed"]},"marketId":{"type":"integer","description":"Market identifier for the reduce-only check."},"accountId":{"type":"integer","description":"Account identifier for the reduce-only check."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonOrderExpired object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonOrderExpired":{"title":"ExecutionBustReasonOrderExpired","type":"object","required":["expiredAt","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OrderExpired"]},"expiredAt":{"type":"integer","description":"Order expiration timestamp."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonMaxQuantityExceeded object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonMaxQuantityExceeded":{"title":"ExecutionBustReasonMaxQuantityExceeded","type":"object","required":["updatedQuantity","maxQuantity","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MaxQuantityExceeded"]},"updatedQuantity":{"type":"string","description":"Updated nonce quantity."},"maxQuantity":{"type":"string","description":"Maximum allowed nonce quantity."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonMarketTypeMismatch object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonMarketTypeMismatch":{"title":"ExecutionBustReasonMarketTypeMismatch","type":"object","required":["accountMarketType","counterpartyMarketType","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketTypeMismatch"]},"accountMarketType":{"type":"integer","description":"Account-side market type."},"counterpartyMarketType":{"type":"integer","description":"Counterparty-side market type."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonMarketIdMismatch object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonMarketIdMismatch":{"title":"ExecutionBustReasonMarketIdMismatch","type":"object","required":["accountMarketId","counterpartyMarketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketIdMismatch"]},"accountMarketId":{"type":"integer","description":"Account-side market identifier."},"counterpartyMarketId":{"type":"integer","description":"Counterparty-side market identifier."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonBaseDeltaWrongSpacing object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonBaseDeltaWrongSpacing":{"title":"ExecutionBustReasonBaseDeltaWrongSpacing","type":"object","required":["baseDelta","baseSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["BaseDeltaWrongSpacing"]},"baseDelta":{"type":"string","description":"Base delta decoded from an 18-decimal fixed-point contract value."},"baseSpacing":{"type":"string","description":"Base spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonPriceWrongSpacing object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonPriceWrongSpacing":{"title":"ExecutionBustReasonPriceWrongSpacing","type":"object","required":["price","priceSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceWrongSpacing"]},"price":{"type":"string","description":"Price decoded from an 18-decimal fixed-point contract value."},"priceSpacing":{"type":"string","description":"Price spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonInvalidFillPrice object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonInvalidFillPrice":{"title":"ExecutionBustReasonInvalidFillPrice","type":"object","required":["fillPrice","orderPrice","reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidFillPrice"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"orderPrice":{"type":"string","description":"Order limit price decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonFillExceedsOrderBaseDelta object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonFillExceedsOrderBaseDelta":{"title":"ExecutionBustReasonFillExceedsOrderBaseDelta","type":"object","required":["fillAmount","orderBaseDelta","orderRole","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FillExceedsOrderBaseDelta"]},"fillAmount":{"type":"string","description":"Fill amount decoded from an 18-decimal fixed-point contract value."},"orderBaseDelta":{"type":"string","description":"Order base delta decoded from an 18-decimal fixed-point contract value."},"orderRole":{"type":"string","enum":["account","counterparty"],"description":"Whether the failed order was the account or counterparty order."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonFeatureUnavailable object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonFeatureUnavailable":{"title":"ExecutionBustReasonFeatureUnavailable","type":"object","required":["feature","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FeatureUnavailable"]},"feature":{"type":"string","description":"Feature identifier that is disabled."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonCollateralIsNotQuote object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonCollateralIsNotQuote":{"title":"ExecutionBustReasonCollateralIsNotQuote","type":"object","required":["collateralPoolId","collateral","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralIsNotQuote"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address that is not the quote collateral."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonCollateralCapExceeded object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonCollateralCapExceeded":{"title":"ExecutionBustReasonCollateralCapExceeded","type":"object","required":["collateralPoolId","collateral","collateralCap","collateralBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralCapExceeded"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address whose pool cap was exceeded."},"collateralCap":{"type":"string","description":"Collateral cap."},"collateralBalance":{"type":"string","description":"Collateral balance."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonCollateralPoolCollision object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonCollateralPoolCollision":{"title":"ExecutionBustReasonCollateralPoolCollision","type":"object","required":["collateralPoolId","counterpartyCollateralPoolId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralPoolCollision"]},"collateralPoolId":{"type":"integer","description":"Account collateral pool identifier."},"counterpartyCollateralPoolId":{"type":"integer","description":"Counterparty collateral pool identifier."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonOpenInterestExceeded object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonOpenInterestExceeded":{"title":"ExecutionBustReasonOpenInterestExceeded","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OpenInterestExceeded"]},"marketId":{"type":"integer","description":"Market identifier whose open-interest cap was exceeded."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonAccountType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonAccountType":{"title":"ExecutionBustReasonAccountType","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SpotAccount","NotSpotAccount"]},"accountId":{"type":"integer","description":"Account identifier whose account type failed the check."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonNegativeAccountRealBalance object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonNegativeAccountRealBalance":{"title":"ExecutionBustReasonNegativeAccountRealBalance","type":"object","required":["accountId","realBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["NegativeAccountRealBalance"]},"accountId":{"type":"integer","description":"Account identifier with negative real balance."},"realBalance":{"type":"string","description":"Real balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonAccountInsolvent object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonAccountInsolvent":{"title":"ExecutionBustReasonAccountInsolvent","type":"object","required":["accountId","marginBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountInsolvent"]},"accountId":{"type":"integer","description":"Account identifier that is insolvent."},"marginBalance":{"type":"string","description":"Margin balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonSameAccountId object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonSameAccountId":{"title":"ExecutionBustReasonSameAccountId","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["SameAccountId"]},"accountId":{"type":"integer","description":"Account identifier that matched itself, when emitted by the contract."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonDecodedLegacy object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonDecodedLegacy":{"title":"ExecutionBustReasonDecodedLegacy","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["DecodedReason"]},"message":{"type":"string","description":"Already-decoded legacy string preserved as a message."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonUnknown object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonUnknown":{"title":"ExecutionBustReasonUnknown","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnknownReason"]},"message":{"type":"string","description":"Support-facing fallback for undecodable or empty revert bytes."}},"additionalProperties":false}}}}
```

## The ExecutionBustReasonUnmapped object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReasonUnmapped":{"title":"ExecutionBustReasonUnmapped","type":"object","required":["reasonName","args"],"properties":{"reasonName":{"type":"string","description":"Decoded custom-error name not explicitly modeled by this schema."},"args":{"type":"object","description":"Named ABI inputs, or arg0/arg1 fallback names, encoded as strings to avoid precision loss.","additionalProperties":{"type":"string"}}},"additionalProperties":false}}}}
```

## The ExecutionBustReason object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"ExecutionBustReason":{"title":"ExecutionBustReason","description":"Machine-readable decoded execution-bust reason. This is a discriminated union keyed by `reasonName`. Known contract errors have strict typed shapes; decoded-but-unmodeled ABI errors use the `ExecutionBustReasonUnmapped` fallback with string-valued `args`.","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonNameOnly"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonExchangeNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketNotFound"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorized"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedSigner"},{"$ref":"#/components/schemas/ExecutionBustReasonUnauthorizedMatchingEnginePublisher"},{"$ref":"#/components/schemas/ExecutionBustReasonSignerNonceAlreadyUsed"},{"$ref":"#/components/schemas/ExecutionBustReasonMarkPriceStale"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonStalePriceDetected"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountBelowIM"},{"$ref":"#/components/schemas/ExecutionBustReasonReduceOnlyConditionFailed"},{"$ref":"#/components/schemas/ExecutionBustReasonOrderExpired"},{"$ref":"#/components/schemas/ExecutionBustReasonMaxQuantityExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketTypeMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonMarketIdMismatch"},{"$ref":"#/components/schemas/ExecutionBustReasonBaseDeltaWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonPriceWrongSpacing"},{"$ref":"#/components/schemas/ExecutionBustReasonInvalidFillPrice"},{"$ref":"#/components/schemas/ExecutionBustReasonFillExceedsOrderBaseDelta"},{"$ref":"#/components/schemas/ExecutionBustReasonFeatureUnavailable"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralIsNotQuote"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralCapExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonCollateralPoolCollision"},{"$ref":"#/components/schemas/ExecutionBustReasonOpenInterestExceeded"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountType"},{"$ref":"#/components/schemas/ExecutionBustReasonNegativeAccountRealBalance"},{"$ref":"#/components/schemas/ExecutionBustReasonAccountInsolvent"},{"$ref":"#/components/schemas/ExecutionBustReasonSameAccountId"},{"$ref":"#/components/schemas/ExecutionBustReasonDecodedLegacy"},{"$ref":"#/components/schemas/ExecutionBustReasonUnknown"},{"$ref":"#/components/schemas/ExecutionBustReasonUnmapped"}]},"ExecutionBustReasonNameOnly":{"title":"ExecutionBustReasonNameOnly","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidSignature","SignatureInvalid","SignatureExpired","SmallOrderSize","DustyOrderSize","InvalidFilledExposures","StorkPayloadOlderThanLatest","ZeroSlTpOrderSize"]}},"additionalProperties":false},"ExecutionBustReasonAccountNotFound":{"title":"ExecutionBustReasonAccountNotFound","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountNotFound"]},"accountId":{"type":"integer","description":"Account identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonExchangeNotFound":{"title":"ExecutionBustReasonExchangeNotFound","type":"object","required":["exchangeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ExchangeNotFound"]},"exchangeId":{"type":"integer","description":"Exchange identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonMarketNotFound":{"title":"ExecutionBustReasonMarketNotFound","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketNotFound"]},"marketId":{"type":"integer","description":"Market identifier that does not exist."}},"additionalProperties":false},"ExecutionBustReasonUnauthorized":{"title":"ExecutionBustReasonUnauthorized","type":"object","required":["address","reasonName"],"properties":{"reasonName":{"type":"string","enum":["Unauthorized"]},"address":{"type":"string","description":"Address that is not authorized."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedSigner":{"title":"ExecutionBustReasonUnauthorizedSigner","type":"object","required":["signer","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedSigner"]},"signer":{"type":"string","description":"Signer address that is not authorized to trade for the account."}},"additionalProperties":false},"ExecutionBustReasonUnauthorizedMatchingEnginePublisher":{"title":"ExecutionBustReasonUnauthorizedMatchingEnginePublisher","type":"object","required":["publisher","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnauthorizedMatchingEnginePublisher"]},"publisher":{"type":"string","description":"Address associated with the publisher authorization failure."}},"additionalProperties":false},"ExecutionBustReasonSignerNonceAlreadyUsed":{"title":"ExecutionBustReasonSignerNonceAlreadyUsed","type":"object","required":["signer","nonce","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SignerNonceAlreadyUsed"]},"signer":{"type":"string","description":"Signer address that already used the nonce."},"nonce":{"type":"string","description":"Signer nonce that was already consumed. Kept as a string because contract nonces are uint256."}},"additionalProperties":false},"ExecutionBustReasonMarkPriceStale":{"title":"ExecutionBustReasonMarkPriceStale","type":"object","required":["marketId","priceTimestamp","blockTimestamp","maxStaleDuration","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarkPriceStale"]},"marketId":{"type":"integer","description":"Market identifier whose mark price is stale."},"priceTimestamp":{"type":"integer","description":"Timestamp carried by the price update."},"blockTimestamp":{"type":"integer","description":"Block timestamp observed by the contracts."},"maxStaleDuration":{"type":"integer","description":"Maximum allowed price staleness in seconds."}},"additionalProperties":false},"ExecutionBustReasonPriceDeviationTooLarge":{"title":"ExecutionBustReasonPriceDeviationTooLarge","oneOf":[{"$ref":"#/components/schemas/ExecutionBustReasonPassivePerpPriceDeviationTooLarge"},{"$ref":"#/components/schemas/ExecutionBustReasonSpotPriceDeviationTooLarge"}],"description":"PriceDeviationTooLarge has two contract shapes: passive-perp includes marketId/price/referencePrice/maxDeviation, while spot/core includes fillPrice/oraclePrice/oracleDeviation."},"ExecutionBustReasonPassivePerpPriceDeviationTooLarge":{"title":"ExecutionBustReasonPassivePerpPriceDeviationTooLarge","type":"object","required":["marketId","price","referencePrice","maxDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"marketId":{"type":"integer","description":"Market identifier whose fill price deviated too far."},"price":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"referencePrice":{"type":"string","description":"Reference price decoded from an 18-decimal fixed-point contract value."},"maxDeviation":{"type":"string","description":"Maximum allowed price deviation decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSpotPriceDeviationTooLarge":{"title":"ExecutionBustReasonSpotPriceDeviationTooLarge","type":"object","required":["fillPrice","oraclePrice","oracleDeviation","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceDeviationTooLarge"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"oraclePrice":{"type":"string","description":"Oracle price decoded from an 18-decimal fixed-point contract value."},"oracleDeviation":{"type":"string","description":"Oracle deviation threshold decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonStalePriceDetected":{"title":"ExecutionBustReasonStalePriceDetected","type":"object","required":["nodeId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["StalePriceDetected"]},"nodeId":{"type":"string","description":"Oracle node identifier that returned a stale price."}},"additionalProperties":false},"ExecutionBustReasonAccountBelowIM":{"title":"ExecutionBustReasonAccountBelowIM","type":"object","required":["accountId","delta","shortfall","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountBelowIM"]},"accountId":{"type":"integer","description":"Account identifier that is below initial margin."},"delta":{"type":"string","description":"Signed initial-margin delta decoded from an 18-decimal fixed-point contract value."},"shortfall":{"type":"string","description":"Absolute initial-margin shortfall decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonReduceOnlyConditionFailed":{"title":"ExecutionBustReasonReduceOnlyConditionFailed","type":"object","required":["marketId","accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["ReduceOnlyConditionFailed"]},"marketId":{"type":"integer","description":"Market identifier for the reduce-only check."},"accountId":{"type":"integer","description":"Account identifier for the reduce-only check."}},"additionalProperties":false},"ExecutionBustReasonOrderExpired":{"title":"ExecutionBustReasonOrderExpired","type":"object","required":["expiredAt","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OrderExpired"]},"expiredAt":{"type":"integer","description":"Order expiration timestamp."}},"additionalProperties":false},"ExecutionBustReasonMaxQuantityExceeded":{"title":"ExecutionBustReasonMaxQuantityExceeded","type":"object","required":["updatedQuantity","maxQuantity","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MaxQuantityExceeded"]},"updatedQuantity":{"type":"string","description":"Updated nonce quantity."},"maxQuantity":{"type":"string","description":"Maximum allowed nonce quantity."}},"additionalProperties":false},"ExecutionBustReasonMarketTypeMismatch":{"title":"ExecutionBustReasonMarketTypeMismatch","type":"object","required":["accountMarketType","counterpartyMarketType","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketTypeMismatch"]},"accountMarketType":{"type":"integer","description":"Account-side market type."},"counterpartyMarketType":{"type":"integer","description":"Counterparty-side market type."}},"additionalProperties":false},"ExecutionBustReasonMarketIdMismatch":{"title":"ExecutionBustReasonMarketIdMismatch","type":"object","required":["accountMarketId","counterpartyMarketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["MarketIdMismatch"]},"accountMarketId":{"type":"integer","description":"Account-side market identifier."},"counterpartyMarketId":{"type":"integer","description":"Counterparty-side market identifier."}},"additionalProperties":false},"ExecutionBustReasonBaseDeltaWrongSpacing":{"title":"ExecutionBustReasonBaseDeltaWrongSpacing","type":"object","required":["baseDelta","baseSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["BaseDeltaWrongSpacing"]},"baseDelta":{"type":"string","description":"Base delta decoded from an 18-decimal fixed-point contract value."},"baseSpacing":{"type":"string","description":"Base spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonPriceWrongSpacing":{"title":"ExecutionBustReasonPriceWrongSpacing","type":"object","required":["price","priceSpacing","reasonName"],"properties":{"reasonName":{"type":"string","enum":["PriceWrongSpacing"]},"price":{"type":"string","description":"Price decoded from an 18-decimal fixed-point contract value."},"priceSpacing":{"type":"string","description":"Price spacing decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonInvalidFillPrice":{"title":"ExecutionBustReasonInvalidFillPrice","type":"object","required":["fillPrice","orderPrice","reasonName"],"properties":{"reasonName":{"type":"string","enum":["InvalidFillPrice"]},"fillPrice":{"type":"string","description":"Fill price decoded from an 18-decimal fixed-point contract value."},"orderPrice":{"type":"string","description":"Order limit price decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonFillExceedsOrderBaseDelta":{"title":"ExecutionBustReasonFillExceedsOrderBaseDelta","type":"object","required":["fillAmount","orderBaseDelta","orderRole","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FillExceedsOrderBaseDelta"]},"fillAmount":{"type":"string","description":"Fill amount decoded from an 18-decimal fixed-point contract value."},"orderBaseDelta":{"type":"string","description":"Order base delta decoded from an 18-decimal fixed-point contract value."},"orderRole":{"type":"string","enum":["account","counterparty"],"description":"Whether the failed order was the account or counterparty order."}},"additionalProperties":false},"ExecutionBustReasonFeatureUnavailable":{"title":"ExecutionBustReasonFeatureUnavailable","type":"object","required":["feature","reasonName"],"properties":{"reasonName":{"type":"string","enum":["FeatureUnavailable"]},"feature":{"type":"string","description":"Feature identifier that is disabled."}},"additionalProperties":false},"ExecutionBustReasonCollateralIsNotQuote":{"title":"ExecutionBustReasonCollateralIsNotQuote","type":"object","required":["collateralPoolId","collateral","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralIsNotQuote"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address that is not the quote collateral."}},"additionalProperties":false},"ExecutionBustReasonCollateralCapExceeded":{"title":"ExecutionBustReasonCollateralCapExceeded","type":"object","required":["collateralPoolId","collateral","collateralCap","collateralBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralCapExceeded"]},"collateralPoolId":{"type":"integer","description":"Collateral pool identifier."},"collateral":{"type":"string","description":"Collateral address whose pool cap was exceeded."},"collateralCap":{"type":"string","description":"Collateral cap."},"collateralBalance":{"type":"string","description":"Collateral balance."}},"additionalProperties":false},"ExecutionBustReasonCollateralPoolCollision":{"title":"ExecutionBustReasonCollateralPoolCollision","type":"object","required":["collateralPoolId","counterpartyCollateralPoolId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["CollateralPoolCollision"]},"collateralPoolId":{"type":"integer","description":"Account collateral pool identifier."},"counterpartyCollateralPoolId":{"type":"integer","description":"Counterparty collateral pool identifier."}},"additionalProperties":false},"ExecutionBustReasonOpenInterestExceeded":{"title":"ExecutionBustReasonOpenInterestExceeded","type":"object","required":["marketId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["OpenInterestExceeded"]},"marketId":{"type":"integer","description":"Market identifier whose open-interest cap was exceeded."}},"additionalProperties":false},"ExecutionBustReasonAccountType":{"title":"ExecutionBustReasonAccountType","type":"object","required":["accountId","reasonName"],"properties":{"reasonName":{"type":"string","enum":["SpotAccount","NotSpotAccount"]},"accountId":{"type":"integer","description":"Account identifier whose account type failed the check."}},"additionalProperties":false},"ExecutionBustReasonNegativeAccountRealBalance":{"title":"ExecutionBustReasonNegativeAccountRealBalance","type":"object","required":["accountId","realBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["NegativeAccountRealBalance"]},"accountId":{"type":"integer","description":"Account identifier with negative real balance."},"realBalance":{"type":"string","description":"Real balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonAccountInsolvent":{"title":"ExecutionBustReasonAccountInsolvent","type":"object","required":["accountId","marginBalance","reasonName"],"properties":{"reasonName":{"type":"string","enum":["AccountInsolvent"]},"accountId":{"type":"integer","description":"Account identifier that is insolvent."},"marginBalance":{"type":"string","description":"Margin balance decoded from an 18-decimal fixed-point contract value."}},"additionalProperties":false},"ExecutionBustReasonSameAccountId":{"title":"ExecutionBustReasonSameAccountId","type":"object","required":["reasonName"],"properties":{"reasonName":{"type":"string","enum":["SameAccountId"]},"accountId":{"type":"integer","description":"Account identifier that matched itself, when emitted by the contract."}},"additionalProperties":false},"ExecutionBustReasonDecodedLegacy":{"title":"ExecutionBustReasonDecodedLegacy","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["DecodedReason"]},"message":{"type":"string","description":"Already-decoded legacy string preserved as a message."}},"additionalProperties":false},"ExecutionBustReasonUnknown":{"title":"ExecutionBustReasonUnknown","type":"object","required":["message","reasonName"],"properties":{"reasonName":{"type":"string","enum":["UnknownReason"]},"message":{"type":"string","description":"Support-facing fallback for undecodable or empty revert bytes."}},"additionalProperties":false},"ExecutionBustReasonUnmapped":{"title":"ExecutionBustReasonUnmapped","type":"object","required":["reasonName","args"],"properties":{"reasonName":{"type":"string","description":"Decoded custom-error name not explicitly modeled by this schema."},"args":{"type":"object","description":"Named ABI inputs, or arg0/arg1 fallback names, encoded as strings to avoid precision loss.","additionalProperties":{"type":"string"}}},"additionalProperties":false}}}}
```

## The Address object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"Address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}
```

## The AccountType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"AccountType":{"title":"AccountType","type":"string","enum":["MAINPERP","SUBPERP","SPOT"],"description":"SPOT = account that can only trade spot, MAINPERP = main perp account, SUBPERP = sub perp account"}}}}
```

## The OrderType object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"OrderType":{"title":"OrderType","type":"string","enum":["LIMIT","STOP_LOSS","TAKE_PROFIT"],"description":"Order type aligned with the on-chain `OrderDetails.orderType` enum: LIMIT = limit order, STOP_LOSS = stop-loss trigger order, TAKE_PROFIT = take-profit trigger order."}}}}
```

## The TimeInForce object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"TimeInForce":{"title":"TimeInForce","type":"string","enum":["IOC","GTC","GTT"],"description":"Order time in force (IOC = Immediate or Cancel, GTC = Good Till Cancel, GTT = Good Till Time)"}}}}
```

## The OrderStatus object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"OrderStatus":{"title":"OrderStatus","type":"string","enum":["OPEN","FILLED","CANCELLED"],"description":"OPEN includes partially filled resting orders, armed protective stops, and their resting children. FILLED and CANCELLED are terminal states. Use Order.triggered to distinguish armed stops from fired children. Requests rejected before order creation return errors, not order-status rows."}}}}
```

## The CancelReason object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CancelReason":{"title":"CancelReason","type":"string","enum":["NO_LIQUIDITY","IOC_REMAINDER","SELF_TRADE_PREVENTION","PROTECTIVE_SELF_TRADE_SWEEP","GTT_EXPIRED","USER_CANCEL","MASS_CANCEL","CANCEL_ALL_AFTER","FEED_RESET","RISK_CANCELLED","RISK_REJECTED","OCO_SIBLING_FIRED","POSITION_CLOSED"],"description":"Machine-readable cancellation reason. Present only on CANCELLED orders and may be omitted when unavailable. See Cancellation reasons in the REST API Order Entry section for per-code meanings and handling."}}}}
```

## The CursorPaginationMeta object

```json
{"openapi":"3.0.3","info":{"title":"Reya DEX Trading API v2","version":"3.5.2"},"components":{"schemas":{"CursorPaginationMeta":{"title":"CursorPaginationMeta","type":"object","required":["limit","count"],"properties":{"limit":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items requested, after the server cap"},"count":{"$ref":"#/components/schemas/UnsignedInteger","description":"Number of items returned"},"nextCursor":{"type":"string","description":"Opaque cursor for the next page. Pass it unchanged as cursor; omitted when no further page is available. See the transfers endpoint's Pagination section for traversal rules."}},"additionalProperties":true},"UnsignedInteger":{"title":"UnsignedInteger","type":"integer","minimum":0}}}}
```
