打开 API 和出站网络钩子

启用开发者访问,使用承载密钥调用 /api/v1,并订阅出站网络钩子以获取订单生命周期事件。

API 密钥、速率限制、发现和订单事件网络钩子。

启用开发者访问

打开设置 → 开发者,启用访问,然后创建 API 密钥和可选的网络钩子端点。

  • 密钥仅限于您的卖家账户,并且可以随时撤销。
  • 开放 API 流量的速率限制为每个卖家每分钟 300 次请求。
  • GET /api/v1 返回可用资源的发现元数据。

身份验证并调用 API

使用您的实时密钥发送 Authorization: Bearer。仅优先使用 HTTPS。切勿在公共客户端中嵌入密钥。

  • offers:read: 列出并获取商品。
  • offers:write: 创建、更新、发布和删除商品。
  • orders:read: 列出并获取卖家订单。
  • orders:write: 标记订单为已交付。

列出最近的订单

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders

轮换密钥

如果密钥泄露,请在开发者设置中撤销它并创建一个新的。在撤销之前更新您的自动化,如果您正在使用。

开放API端点地图

基础路径为/api/v1。成功的响应包括X-RateLimit-Limit、X-RateLimit-Remaining和X-RateLimit-Reset。GET /api/v1返回与本文匹配的机器可读操作目录。

  • GET /api/v1: 发现(任何有效的密钥)。
  • GET /api/v1/offers: 列出商品(offers:read)。
  • POST /api/v1/offers: 创建草稿(offers:write)。
  • GET /api/v1/offers/:urlOrId: 获取商品(offers:read)。
  • PATCH /api/v1/offers/:urlOrId: 更新商品字段(offers:write)。
  • DELETE /api/v1/offers/:urlOrId: 删除或归档(offers:write)。
  • POST /api/v1/offers/:urlOrId/publish: 发布(offers:write)。
  • GET /api/v1/orders: 列出销售(orders:read)。
  • GET /api/v1/orders/:uid: 获取订单(orders:read)。
  • POST /api/v1/orders/:uid/deliver: 标记为已交付(orders:write)。

打印实时操作目录

bash
curl -s -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1 | jq ".operations"

商品API

商品标识符接受公共URL别名或数字ID。响应省略内部ID和sellerId。库存行、选项价格、媒体和属性在卖家编辑器中管理(或未来的端点),尚未通过PATCH管理。

列出活跃商品

bash
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/offers?archive=active"

创建草稿商品

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers

获取一个商品及其关系

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL

更新允许的字段

bash
curl -X PATCH -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL -d @body.json

允许的PATCH主体字段

json
{
  "title": "更新后的标题",
  "description": "面向买家的描述",
  "visibility": "公开",
  "categoryId": 12,
  "offeringId": 34,
  "thumbnail": "https://…",
  "offerType": "账户",
  "listingMode": "标准"
}

发布(默认公开)

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL/publish -d '{"visibility":"公开"}'

删除或归档

bash
curl -X DELETE -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL

发布要求

如果必填的商品字段不完整,发布将以400失败(与商品编辑器相同的验证)。成功的更新可以触发offer.updated webhook。

订单API

订单范围限于您的卖家账户。买方的账单详情可能会被删除。使用公共订单UID(而不是仅仅不透明的引用)进行获取和交付。

列出最近的已付款销售

bash
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/orders?status=PAID&limit=20&sort=newest"

获取一个订单及其项目

bash
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders/ORDER_UID

标记为已交付

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/orders/ORDER_UID/deliver -d @evidence.json

可选证据主体

json
{
  "evidence": [
    "https://cdn.example.com/proof-1.png"
  ]
}

错误和速率限制

错误返回JSON { error, code? }。速率限制为每个API密钥每分钟300个请求。

  • 401 API_KEY_REQUIRED或API_KEY_INVALID。
  • 403 SCOPE_MISSING当密钥缺少端点范围时。
  • 404 找不到您不拥有的商品或订单(无论如何消息相同)。
  • 429 RATE_LIMITED,带有Retry-After和X-RateLimit-*头。
  • 400用于验证失败(发布不完整、交付不允许、空PATCH)。

处理429

使用Retry-After秒数进行退避。不要轮换密钥以绕过限制;限制是每个密钥的,并且对所有卖家都是统一的。

出站订单网络钩子

订阅 order.paid、order.delivered、order.completed、order.refunded 和 order.disputed。选择 JSON 作为您的服务器或 Discord 作为频道嵌入。可选签名使用 X-RMT-Timestamp 和 X-RMT-Signature。

  • Discord 格式的帖子丰富嵌入,包含订单链接和报价名称。
  • JSON 格式的帖子包含结构化主体,包括报价名称和行项目。
  • 如果您设置了密钥,请验证 HMAC-SHA256 的 timestamp.body 等于 v1= 签名十六进制。
  • 交付历史记录出现在每个端点下,以便您可以重试失败。

示例签名头

json
{
  "X-RMT-Event": "order.paid",
  "X-RMT-Timestamp": "1710000000",
  "X-RMT-Signature": "v1=abc123…"
}

验证签名

计算 HMAC-SHA256,使用您的端点密钥对字符串 timestamp + "." + rawBody 进行计算。与 v1= 后的十六进制进行比较。

Node.js 草图

javascript
import crypto from "crypto";
const expected = crypto
  .createHmac("sha256", secret)
  .update(`${timestamp}.${rawBody}`)
  .digest("hex");
const ok = expected === signature.replace(/^v1=/, "");

打开开发者工具

在设置中创建密钥和网络钩子端点。