枚举类型速查
1. Wire 枚举
| 枚举 | JSON 编码 | 取值 |
|---|---|---|
Side | PascalCase | "Bid" · "Ask" |
MarketKind | PascalCase | "Native" · "ExternalPeg" |
MarketLifecycle | PascalCase | "Created"→"Active"→"Halted"→"DelistPending"→"Delisted" |
HaltReason | PascalCase | "Admin" 管理员主动暂停 · "QuoteStale" 报价过期自动暂停(getMarkets/getMarket 的 halt_reason;未暂停 / 旧链为 null) |
MarginMode | PascalCase | "Cross" · "Isolated" |
AccountRole | PascalCase | "Trader"/"OracleOperator"/"SettlementOperator"/"Admin"/"Liquidator"/"Quoter" |
DepositStatus | PascalCase | "Recorded" · "Credited" |
WithdrawStatus | PascalCase | "Pending" · "Settled" · "Refunded" |
TxStatus | kebab-case | "accepted" · "kept-reject" |
HealthStatus | lowercase | "ok" · "recovering"(预留) · "degraded"(预留) |
TimeInForce | PascalCase | "Gtc" · "Ioc" · "Fok" · "PostOnly" |
OrderLifecycleStatus | kebab-case | "open" · "closed" · "unknown" |
OrderUpdateKind | lowercase | "accepted" · "resting" · "done" · "expired" |
TriggerUpdateKind | snake_case | "placed" · "amended" · "activated" · "cancelled" · "expired" · "fire_failed" · "oco_placed" · "oco_resolved" |
AuthChannel | snake_case | "master" · "master_or_agent_with_role" · "user_signed_master" |
RoleFilter | snake_case | "trader"/"oracle_operator"/"settlement_operator"/"admin"/"liquidator"/"quoter" |
TopSortKey | lowercase | "balance" · "equity" |
CloseReason | snake_case | "filled" · "ioc_expired" · "cancelled" · "gtd_expired" · "fok_rejected" · "market_delisted" · "amend_clamped_at_filled" |
TriggerOrderType | lowercase | "market" · "limit" |
TriggerDirection | PascalCase | "Above" · "Below" |
OcoStatus | PascalCase | "Active" · "Resolved" |
TriggerCancelReason | PascalCase | "ByOwner" · "OnFailure" · "MarketDelisted" · "OcoSibling" |
OcoResolveReason | PascalCase | "OrderResolved" · "TriggerFired" · "ManualCancel" · "PairCancelled" · "TriggerExpired" |
WsOp | lowercase | "subscribe" · "subscribed" · "error" |
OrderbookSource | lowercase | "index" |
BalanceReason | PascalCase | 见 §7 BalanceReason |
MarketKind
市场类型(CreateMarket.config.kind / getMarkets 返回):
| Value | 说明 |
|---|---|
Native | 原生市场(链上撮合,Book A) |
ExternalPeg | 外部锚定市场(Book B,HL 行情 + 报价驱动) |
2. MassCancelScope
批量撤单的范围选择器。
"Owner" // 该 owner 在该市场的全部挂单
{"Side": "Bid"} // 指定方向
{"Ids": [1001, 1002, 1003]} // 按 order_id 列表
| 变体 | JSON 形态 | 说明 |
|---|---|---|
| Owner | "Owner" | 全部挂单 |
| Side | {"Side": "Bid"} | 按方向(Bid/Ask) |
| Ids | {"Ids": [1, 2, 3]} | 按 order_id 列表 |
3. HandlerCrate
Action 主 handler 所属业务 crate(getActionsMeta 的元数据,仅文档用途)。
"zepto-trade" | "zepto-bridge" | "zepto-ops" | "zepto-liquidation" | "zepto-triggers"
4. RejectReason(摘要)
完整列表见 概述 - 错误码。常用变体:
| 变体 | 说明 |
|---|---|
InsufficientBalance | 余额 / IM 不足(required/have 为 raw i128)。Cross 非 reduce_only 时 have = trading 口径(含 Cross uPnL);reduce_only / 逐仓 / 提现划逐仓等见 write-actions §7.0 |
NonceMismatch | nonce 不匹配 |
SignerNotFound | signer 账户不存在 |
BadMasterSignature | secp256k1 签名无效 |
AgentNotRegistered | recover 地址既非 master 也非已注册 agent(含签错通道) |
AgentExpired | agent 已过期 |
AgentRoleMissing | agent 缺少角色 |
MasterOnlyAction | 该 Action 不允许 agent |
AccountRoleMissing | 签名者缺少角色 |
SymbolNotFound / MarketNotFound | 市场不存在 |
MarketNotActive | 市场 lifecycle 不允许该操作 |
QuoteNotAvailable | 无可用 oracle 报价 |
AmendNoChange | 挂簿改单无有效变更 |
AmendOrderNotResting | 改单目标非 resting |
OrderTargetInvalid | order_id / cloid 定位非法 |
CancelOwnerMismatch | 非订单 owner |
DecimalPrecisionExceeded | decimal string 超精度 |
PostOnlyRejected / FokRejected | PostOnly 会立即成交 / FOK 无法全成(FOK 也可出现在 result.reason,见 errors §3.3) |
DustNotionalFill | qty>0 但名义值截断为 0 |
MarketEmergencyHalt | 市场紧急熔断中 |
ReduceOnlyWouldOpenOrFlip | reduce_only 会开仓或翻仓(旧文档名 ReduceOnlyRejected) |
PriceNonPositive / QtyNonPositive | 价格/数量非法 |
TriggerNotFound | 触发单不存在 |
TriggerOwnerMismatch | 非触发单 owner |
TriggerPriceNonPositive | 触发价 ≤ 0 |
TriggerWouldExecuteImmediately | mark 已满足触发方向 |
TriggerCountCapExceeded | 账户活跃触发单达上限(256) |
TriggerLimitUnreachableAtFire | stop-limit 触发价与限价方向矛盾 |
AmendTriggerNoChange | 触发单改单无有效变更 |
AmendTriggerPayloadMismatch | Market 载荷误传 new_limit_price / new_tif |
OcoCrossMarketUnsupported | OCO 两腿跨市场 |
OcoDuplicateLeg | OCO 两腿参数重复 |
OcoActivePairsCapExceeded | 账户 Active OCO 达上限 |
OcoLegValidationFailed | OCO 腿参数校验失败 |
OcoPairNotFound | OCO pair 不存在 |
OcoNotOwner | 非 OCO owner |
OcoAlreadyResolved | OCO 已 Resolved |
BracketParentNotFound | Bracket:parent 不存在或非 resting |
BracketParentMismatch | Bracket:parent 与 OCO 的 owner / market 不一致 |
BracketParentAlreadyLinked | Bracket:entry 已绑定其他 Active protective OCO |
BracketParentReduceOnly | Bracket:parent 为 reduce_only |
BracketParentAmbiguous | Bracket:parent_order_id 与 parent_client_order_id 同时提供 |
BracketInvalidOcoKind | Bracket:非 TwoTriggers 或两腿非 reduce_only |
ReferralSelf | 不能绑定自己的推荐码 |
ReferrerAlreadyBound | 已绑定推荐码(只能绑一次) |
ReferralCodeNotFound | 推荐码未注册 |
ReferralCodeAlreadyExists | 推荐码已被他人占用 |
ReferralCodeAlreadyRegistered | 本账户已注册过推荐码 |
ReferralCodeInvalid | 推荐码格式不合法(须 3–32 字符,仅 ASCII 字母/数字/_/-) |
RebateRatioOutOfRange | 返佣比例 > 10 000 bps |
RebateRatioOwnerNotReferrer | SetAccountRebateRatio 目标未注册推荐码 |
InviterKeepRatioOutOfRange | 邀请者自留比例 > 10 000 bps |
MissingAccountForInviterKeepRatio | 设置自留比例时账户不存在 |
5. StopTriggerLegWire
PlaceOco → StopAndLimit.stop_leg / TwoTriggers.primary / TwoTriggers.secondary 的 externally-tagged JSON(写侧)。
{
"Market": {
"symbol": "BTC-USDT",
"side": "Ask",
"qty": "0.50000",
"trigger_price": "95000.00",
"trigger_direction": "Below",
"reduce_only": true,
"client_trigger_id": null,
"expires_at_ms": null
}
}
{
"Limit": {
"symbol": "BTC-USDT",
"side": "Ask",
"qty": "0.50000",
"trigger_price": "95000.00",
"trigger_direction": "Below",
"limit_price": "94900.00",
"limit_tif": "Gtc",
"reduce_only": true,
"client_trigger_id": null,
"expires_at_ms": null
}
}
| 变体 | 说明 |
|---|---|
Market | stop-market 触发腿;触发后以 IOC 市价吃穿 |
Limit | stop-limit 触发腿;触发后下 limit_price + limit_tif 限价单 |
6. OcoLegs
getOcoPairs / getOcoPair / getAllOcoPairs 响应中 legs 字段的 externally-tagged JSON(读侧,仅 ID 引用)。
| 变体 | JSON 形态 | 说明 |
|---|---|---|
TwoLimits | {"TwoLimits": {"primary_order_id": 1001, "secondary_order_id": 1002}} | 双限价 OCO |
StopMarketAndLimit | {"StopMarketAndLimit": {"stop_trigger_id": 7001, "limit_order_id": 1003}} | stop-market + 限价 |
StopLimitAndLimit | {"StopLimitAndLimit": {"stop_trigger_id": 7002, "limit_order_id": 1004}} | stop-limit + 限价 |
TwoTriggers | {"TwoTriggers": {"primary_trigger_id": 7003, "primary_kind": "StopMarket", "secondary_trigger_id": 7004, "secondary_kind": "StopLimit"}} | 双触发(典型 TP/SL) |
腿详情经 getTriggerOrders(触发腿)/ getAccountOrders(限价腿)按 ID 回查。TwoTriggers 两腿均走 getTriggerOrders。
7. BalanceReason
Core::BalanceChanged.reason 取值(PascalCase)。返佣相关变体与 Core::RebatePaid 成对出现。
| 变体 | 说明 |
|---|---|
RebateToInviter | 邀请者获得返佣(credit 全仓 balance) |
RebateToInvitee | 被邀请交易者获得返佣回分(credit 全仓 balance) |
其余常用变体:Deposit · Withdrawal · TakerFee · MakerFee · FeeRecipientCredit · RealizedPnl · BridgeDeposit · BridgeWithdrawDebit · BridgeWithdrawRefund · OracleTrade · ImRelease 等。
8. 角色位掩码
| 角色 | 位值 | role_mask |
|---|---|---|
| Trader | 1 | 1 |
| OracleOperator | 2 | 2 |
| SettlementOperator | 4 | 4 |
| Admin | 8 | 8 |
| Liquidator | 16 | 16 |
| Quoter | 32 | 32 |