跳到主要内容

更新交易对状态

描述

将现货交易对在 listed (已上线)、halted (已暂停) 和 delisted (已下架) 状态之间进行切换。

仅管理员。 服务器须设置 ADMIN_API_KEY 环境变量,且请求头中须传入 X-API-Key

重要——下架行为:status 设为 "delisted" 时,系统首先通过 cancel_market 引擎调用清空订单簿(撤销所有挂单并退款),之后再将数据库中的状态改为已下架。此机制确保市场被标记为终态之前,所有锁定余额均已归还给用户。下架后,任何新的下单请求均将以 410 MARKET_DELISTED 拒绝。此操作不可逆——无法从 delisted 状态回退。

完整状态转换表参见市场状态枚举

HTTP 请求

PATCH /admin/spot/markets/:id/status (X-API-Key: ADMIN_API_KEY)

:id 为交易对标识符(如 DFUSDT)。区分大小写。

权重

0 — 管理员接口不设权重限制。每次市场变更都会向撮合引擎发送 ReloadMarket 命令,使内存中的 MarketCache 无需重启即可获取最新配置。

请求参数

名称类型必填描述
statusENUM必填目标市场状态。必须为 listedhalteddelisted 之一。参见市场状态

响应示例

200 OK

{
"ok": true,
"id": "DFUSDT",
"status": "halted"
}
字段说明
ok成功时始终为 true
id已更新的交易对标识符,原样返回。
status实际应用后的新市场状态。

错误响应

HTTPerror触发条件
400INVALID_STATUSstatus 不是 listedhalteddelisted 之一。
500DB_ERROR更新时发生意外的 Postgres 错误。请查看服务器日志。

完整列表:错误代码

代码示例

cURL

ADMIN_API_KEY="your_admin_api_key"
MARKET_ID="DFUSDT"

# Halt a market (pause trading, resting orders stay on the book)
curl -s -X PATCH "https://api-sepolia.p99.world/api/v1/admin/spot/markets/${MARKET_ID}/status" \
-H "X-API-Key: ${ADMIN_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"status": "halted"}'

# Delist a market (drains the book first, then marks terminal)
curl -s -X PATCH "https://api-sepolia.p99.world/api/v1/admin/spot/markets/${MARKET_ID}/status" \
-H "X-API-Key: ${ADMIN_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"status": "delisted"}'

Python

import requests

ADMIN_API_KEY = "your_admin_api_key"
BASE_URL = "https://api-sepolia.p99.world/api/v1"

def set_market_status(market_id: str, status: str) -> dict:
r = requests.patch(
f"{BASE_URL}/admin/spot/markets/{market_id}/status",
json={"status": status},
headers={"X-API-Key": ADMIN_API_KEY, "Content-Type": "application/json"},
timeout=10, # delist may take longer due to book drain
)
r.raise_for_status()
return r.json()

# Halt trading
result = set_market_status("DFUSDT", "halted")
print(result["ok"], result["id"], result["status"])

# Delist (irreversible — drains book first)
result = set_market_status("DFUSDT", "delisted")
print(result["ok"], result["id"], result["status"])