# 神秘奖金接口

**mystery_bonus**

神秘奖金的 `list` / `detail` / `claim` 走通用活动接口（`kind=mystery_bonus`，详见 [活动接口](400_promotion.md)）。活动按"注册当天为第 1 天"的资格日历滚动到 `end_day_offset`，每个资格日按累计充值匹配档位发放区间随机奖金。

---

## 活动详情字段 {#detail}

通用接口 `GET /promotion/mystery_bonus/detail` 的 `data` 字段：

字段 | 类型 | 说明
---|---|---
description | string | 活动说明
register_at | string | 玩家注册时间（RFC3339）
end_at | string | 活动结束时间（RFC3339）
end_day_offset | number | 自注册起的活动天数
end_hour | number | 当天结束时点（小时）
bet_multiple | number | 打码倍数
max_bonus | number | 活动所有档位最大 `display_max`
status | number | 见下方状态码
focus_status | string | 前端单卡片渲染依据（见下方）
focus_day_offset | number | 单卡片对应的资格日序号
focus_date | string | 该资格日 0 点（RFC3339）
focus_claimed_amount | number | 已领时的实际金额
next_claim_at | string | 严格晚于今天的下一资格日开始时间（RFC3339）；活动已结束或无后续资格日时为空串，不代表无需满足充值门槛
deposit_amount | number | 自注册以来累计充值
claimed_days | list<number\> | 已领资格日序号列表
claimed_amounts | object | `{day_offset: amount}` 已领金额映射
claimed_total | number | 已领金额合计
claim_days | list<DayConfig\> | 各资格日配置（含展示档位，不含 payout）

`DayConfig` 字段：

字段 | 类型 | 说明
---|---|---
day | number | 资格日序号
tiers | list<Tier\> | 档位展示列表

`Tier` 字段（仅展示，不含 `payout_min/max`）：

字段 | 类型 | 说明
---|---|---
deposit_min | number | 命中下限
deposit_max | number | 命中上限（`0` 视为 ∞）
display_min | number | 展示下限
display_max | number | 展示上限

活动列表 `/promotion/list` 的该活动 `data[].payload` 下发 `next_claim_at`，与详情口径一致。

---

## 状态码

字段 | 含义
---|---
`status=0` | 无资格（未注册等）
`status=1` | 今日可领
`status=2` | 今日已领
`status=3` | 今日非资格日
`status=4` | 活动已结束

`focus_status`：`locked`（今日非资格日，已聚焦下一资格日）、`pending`（今日资格日 + 达档 + 未领）、`non_eligible`（今日资格日 + 累计存款未达任何档位）、`claimed`（今日已领）、`ended`（活动已结束）。

---

## 领取 {#claim}

通用接口 `POST /promotion/mystery_bonus/claim`。需当日为资格日 + 累计 / 当日存款达档（若配置 `today_min_deposit`）+ 当日未领过。

**输入:** `{}`

**输出:**

字段 | 类型 | 说明
---|---|---
amount | number | 区间随机后的入账金额
tier_index | number | 命中档位下标
day_offset | number | 当前资格日序号
