5.7 KiB
5.7 KiB
API Contract
更新时间:2026-04-01
本文档只描述当前仓库里真实存在、且在 cmd/server/main.go 中实际接线的接口。
1. 基本约定
- 基础路径:
/api/v1 - 认证方式:
Authorization: Bearer <access_token> - 当前实现不支持通过 query string 传递 token
- 统一响应:
{
"code": 0,
"message": "success",
"data": {}
}
- 基础设施接口不走统一响应:
GET /healthGET /health/liveGET /health/readyGET /metricsGET /swagger/*any
2. 当前公开接口
2.1 认证
POST /api/v1/auth/register- 当请求体包含
phone时,当前实现要求同时提供phone_code
- 当请求体包含
POST /api/v1/auth/bootstrap-adminPOST /api/v1/auth/loginPOST /api/v1/auth/refreshGET /api/v1/auth/capabilitiesGET /api/v1/auth/activatePOST /api/v1/auth/resend-activationPOST /api/v1/auth/send-email-codePOST /api/v1/auth/login/email-codePOST /api/v1/auth/send-codePOST /api/v1/auth/login/codeGET /api/v1/auth/csrf-tokenGET /api/v1/auth/oauth/providersGET /api/v1/auth/oauth/:providerGET /api/v1/auth/oauth/:provider/callback
说明:
/api/v1/auth/*当前会统一返回Cache-Control: no-store等防缓存头。
2.2 密码重置
POST /api/v1/auth/forgot-passwordGET /api/v1/auth/reset-passwordPOST /api/v1/auth/reset-password
2.3 验证码
GET /api/v1/auth/captchaGET /api/v1/auth/captcha/imagePOST /api/v1/auth/captcha/verify
3. 当前受保护接口
3.1 认证与当前用户
POST /api/v1/auth/logoutGET /api/v1/auth/userinfoGET /api/v1/auth/2fa/statusGET /api/v1/auth/2fa/setupPOST /api/v1/auth/2fa/enablePOST /api/v1/auth/2fa/disablePOST /api/v1/auth/2fa/verifyGET /api/v1/users/me/social-accountsPOST /api/v1/users/me/bind-socialDELETE /api/v1/users/me/bind-social/:provider
3.2 用户
GET /api/v1/users- 当前要求管理员
- 支持
page、page_size、keyword - 支持
status=0|1|2|3 - 支持高级筛选:
role_ids、created_from、created_to、sort_by、sort_order
GET /api/v1/users/:id- 当前要求本人或管理员
PUT /api/v1/users/:id- 当前要求本人或管理员
DELETE /api/v1/users/:id- 当前要求权限
user:delete
- 当前要求权限
PUT /api/v1/users/:id/password- 当前只允许本人
PUT /api/v1/users/:id/status- 当前要求权限
user:manage
- 当前要求权限
GET /api/v1/users/:id/roles- 当前要求本人或管理员
PUT /api/v1/users/:id/roles- 当前要求权限
user:manage
- 当前要求权限
POST /api/v1/users/:id/avatar
3.3 角色与权限
以下接口全部要求管理员:
POST /api/v1/rolesGET /api/v1/rolesGET /api/v1/roles/:idPUT /api/v1/roles/:idDELETE /api/v1/roles/:idPUT /api/v1/roles/:id/statusGET /api/v1/roles/:id/permissionsPUT /api/v1/roles/:id/permissionsPOST /api/v1/permissionsGET /api/v1/permissionsGET /api/v1/permissions/treeGET /api/v1/permissions/:idPUT /api/v1/permissions/:idDELETE /api/v1/permissions/:idPUT /api/v1/permissions/:id/status
3.4 设备
GET /api/v1/devicesPOST /api/v1/devicesGET /api/v1/devices/:idPUT /api/v1/devices/:idDELETE /api/v1/devices/:idPUT /api/v1/devices/:id/statusPOST /api/v1/devices/:id/trust- 设置设备信任状态,跳过2FA
- 请求体:
{ "trust_duration": "30d" }(可选,默认永久)
DELETE /api/v1/devices/:id/trust- 取消设备信任状态
POST /api/v1/devices/by-device-id/:deviceId/trust- 通过设备标识字符串设置信任状态
- 请求体:
{ "trust_duration": "30d" }(可选,默认永久)
GET /api/v1/devices/me/trusted- 获取当前用户的信任设备列表
POST /api/v1/devices/me/logout-others- 登出所有其他设备
- 请求头:
X-Device-ID: <current_device_id>
GET /api/v1/devices/users/:id
3.5 日志
GET /api/v1/logs/login/meGET /api/v1/logs/operation/meGET /api/v1/logs/login- 当前要求管理员
GET /api/v1/logs/operation- 当前要求管理员
3.6 2FA / TOTP
GET /api/v1/auth/2fa/statusGET /api/v1/auth/2fa/setupPOST /api/v1/auth/2fa/enablePOST /api/v1/auth/2fa/disablePOST /api/v1/auth/2fa/verify- 请求体:
{ "code": "123456", "device_id": "xxx" }(device_id 可选) - 若设备已信任且未过期,跳过TOTP验证
- 请求体:
3.7 Webhook
POST /api/v1/webhooksGET /api/v1/webhooksPUT /api/v1/webhooks/:idDELETE /api/v1/webhooks/:idGET /api/v1/webhooks/:id/deliveries
3.8 管理员扩展接口
GET /api/v1/admin/users/export- 支持
format=csv|xlsx - 支持
fields=username,email,... - 支持基础导出筛选:
keyword、status
- 支持
POST /api/v1/admin/users/import- 当前支持上传
.csv或.xlsx
- 当前支持上传
GET /api/v1/admin/users/import/template- 支持
format=csv|xlsx
- 支持
GET /api/v1/admin/stats/dashboardGET /api/v1/admin/stats/users
4. 当前响应形态
4.1 列表接口
{
"code": 0,
"message": "success",
"data": {
"items": [],
"total": 0,
"page": 1,
"page_size": 20
}
}
4.2 登录成功
{
"code": 0,
"message": "success",
"data": {
"access_token": "token",
"refresh_token": "refresh-token",
"expires_in": 7200,
"user": {
"id": 1,
"username": "admin",
"email": "admin@example.com",
"phone": "",
"nickname": "",
"avatar": "",
"status": 1
}
}
}
5. 运行时说明
- 当前主密码算法为
Argon2id - 当前主 JWT 算法为
RS256 - 当前配置下短信验证码路由已挂载
- OAuth 路由始终存在,具体 provider 是否可用取决于配置是否填写真实凭据