POST /auth/register
发送验证邮件以开始注册。这是两步注册流程的第 1 步。管理员可以关闭注册。若
auth.registration_open 为 false,此接口返回 403。每个地址每 24 小时最多发送 5 封邮件。要注册的邮箱地址。验证链接会发送到该地址。
验证码挑战成功后返回的令牌。仅当部署已启用 CAPTCHA 时需要提供。
确认验证邮件已发送。
| 状态 | 何时发生 |
|---|---|
400 Bad Request | 已启用 CAPTCHA,但未提供 captchaToken。 |
403 Forbidden | 管理员已关闭注册。 |
403 Forbidden | CAPTCHA 校验失败。 |
409 Conflict | 邮箱地址已注册。 |
429 Too Many Requests | 已超过速率限制(每个地址 24 小时 5 封)。 |
503 Service Unavailable | CAPTCHA 已启用但服务不可用或未正确配置。 |
POST /auth/register/complete
使用验证邮件中的令牌完成注册。这是注册流程的第 2 步。该令牌只能使用一次,并会在 1 小时后过期。成功后,系统会自动为新用户创建个人班级,并返回 JWT,使用户立即登录。
邮箱链接中的验证令牌。
账户密码。至少 8 个字符。
显示名称。若省略,界面会使用用户的邮箱地址作为默认显示名。
要关联到此账户的学校 UUID。若提供,则必须填写
studentId。学号。提供
schoolId 时必填,且在该学校内必须唯一。IANA 时区标识符(例如
America/New_York)。用于按用户本地时间显示截止日期。JWT Bearer 令牌,有效期 7 天。
| 状态 | 何时发生 |
|---|---|
400 Bad Request | 令牌无效、已过期,或验证失败。 |
POST /auth/login
使用邮箱和密码登录。返回 JWT 和用户资料。 Request body已注册的邮箱地址。
账户密码。
JWT Bearer 令牌,有效期 7 天。
| 状态 | 何时发生 |
|---|---|
401 Unauthorized | Email or password is incorrect. |
403 Forbidden | Account has been deactivated. |
POST /users/me/email/change
向新邮箱地址发送变更验证邮件。你需要携带登录令牌。如果部署启用了 CAPTCHA,你必须提供
captchaToken。该接口同样受邮件发送限流保护。你要更换到的新邮箱地址。
验证码挑战成功后返回的令牌。仅当部署已启用 CAPTCHA 时需要提供。
确认验证邮件已发送。
| 状态 | 何时发生 |
|---|---|
400 Bad Request | 已启用 CAPTCHA,但未提供 captchaToken。 |
401 Unauthorized | 缺少或无效的登录令牌。 |
403 Forbidden | CAPTCHA 校验失败。 |
409 Conflict | 该邮箱已被其他账户使用。 |
429 Too Many Requests | 已超过邮件发送速率限制。 |
503 Service Unavailable | CAPTCHA 已启用但服务不可用或未正确配置。 |
POST /users/me/email/confirm
使用邮件中的令牌确认邮箱变更。你需要携带登录令牌。 Request body邮箱变更确认链接中的令牌。
| 状态 | 何时发生 |
|---|---|
400 Bad Request | 令牌无效或已过期。 |
401 Unauthorized | 缺少或无效的登录令牌。 |
409 Conflict | 目标邮箱已被其他账户使用。 |
POST /auth/forgot-password
请求密码重置邮件。为防止邮箱枚举,该接口始终返回200 - 无论该地址是否已注册,响应都相同。
每个地址每 24 小时最多发送 5 封邮件。重置链接包含一个只能使用一次、且 1 小时后过期的令牌。
与账户关联的邮箱地址。
通用确认消息。
| 状态 | 何时发生 |
|---|---|
429 Too Many Requests | 已超过速率限制。 |
POST /auth/reset-password
使用重置邮件中的令牌设置新密码。返回 JWT,使用户在重置后立即登录。该令牌只能使用一次,并会在 1 小时后过期。
邮件链接中的重置令牌。
新密码。至少 8 个字符。
{ token, user } - 结构与 POST /auth/login 相同。
Error codes
| 状态 | 何时发生 |
|---|---|
400 Bad Request | Token is invalid or expired. |
GET /auth/verify-token
检查验证令牌是否仍然有效,并返回其关联的邮箱地址。前端会用它在显示注册或密码重置表单之前验证令牌。 Query parameters要验证的令牌。
令牌用途。取值之一:
REGISTRATION、PASSWORD_RESET。若令牌存在且未过期则为
true,否则为 false。与该令牌关联的邮箱地址。仅在
valid 为 true 时存在。