{
  "module": {
    "module": "无状态会员管理",
    "moduleKey": "statelessMember"
  },
  "api": {
    "title": "切换无状态会员售卖状态",
    "method": "PUT",
    "path": "/api/stateless-members/{id}/sale-status",
    "description": "标记无状态会员为已售出（占用）或回库为未售。用于手动分发、渠道出库等；一卡一卖，已售不可重复标记为已售。",
    "requestParams": {
      "body": {
        "saleStatus": "number｜必填，售卖状态：0-未售（回库），1-已售（占用）",
        "orderNo": "string｜可选，关联订单号；标记为已售时可写入 soldOrderNo"
      },
      "path": [
        {
          "name": "id",
          "type": "string",
          "required": true,
          "description": "无状态会员ID（_id 或数字 id）"
        }
      ]
    },
    "responseExample": {
      "success": {
        "code": "0000",
        "message": "售卖状态更新成功",
        "data": {
          "id": 1,
          "code": "SM0001",
          "name": "开放平台会员",
          "saleStatus": 1,
          "soldAt": "2025-01-15T10:00:00.000Z",
          "soldOrderNo": "ORD-20250115-0010",
          "status": 1,
          "updateTime": "2025-01-15T10:00:00.000Z"
        }
      },
      "failure": {
        "code": "4000",
        "message": "该无状态会员已售出，不可重复售卖",
        "data": null
      },
      "failureNotFound": {
        "code": "4040",
        "message": "无状态会员不存在",
        "data": null
      }
    },
    "notes": [
      "saleStatus=1 时写入 soldAt；可选 orderNo 写入 soldOrderNo",
      "saleStatus=0 时清除 soldAt、soldOrderNo（回库）",
      "已为已售（saleStatus=1）时再次设为 1 会返回：该无状态会员已售出，不可重复售卖",
      "售卖状态不影响 OpenAPI 激活/校验；已售卡密在有效期内仍可无限次激活",
      "管理端订单（/api/orders）在状态变为 PAID 或 COMPLETED 且带有 statelessMemberId 时，也会自动标记为已售"
    ]
  }
}