浏览器
HttpOnly + Secure + SameSite=Lax Cookie,由同源 Webmail 自动管理。
OmniMail Web 与桌面客户端共用的 JSON API。生产环境默认与 Webmail 同源,所有接口位于 /api/*。
浏览器使用安全 Cookie,桌面客户端使用短期 Access Token 与轮换 Refresh Token。两种方式执行相同的角色、邮箱归属与发信权限检查。
/api/*,尚未复制为 /api/v1/*。稳定版前可能新增版本化路径。HttpOnly + Secure + SameSite=Lax Cookie,由同源 Webmail 自动管理。
Bearer Access Token 保存在内存,Refresh Token 保存到系统凭据存储。
GET /api/mailboxes
Authorization: Bearer om_at_...
访问令牌过期或被撤销时返回 401。客户端应只尝试刷新一次;刷新失败后清除本地令牌并重新登录。
密码与 MFA 验证完成后,桌面端可以签发独立设备会话。令牌明文只返回一次,D1 仅保存 SHA-256 摘要。
/api/auth/token{
"email": "user@example.com",
"password": "your-password",
"deviceName": "OmniMail Desktop / Windows"
}
{
"tokenType": "Bearer",
"accessToken": "om_at_...",
"expiresIn": 900,
"refreshToken": "om_rt_...",
"refreshExpiresIn": 2592000,
"scopes": ["*"]
}
列表使用不透明游标与“时间 + 唯一 ID”排序。翻页时必须保持 folder、q、mailbox 和 domain 等筛选参数不变。
/api/messages?folder=inbox&limit=30{
"messages": [],
"counts": { "unread": 0, "starred": 0 },
"page": {
"hasMore": true,
"nextCursor": "opaque-cursor",
"limit": 30
}
}
limit 为 1–100;邮件默认 30。nextCursor = null 或 hasMore = false。version,未变化时只返回 unchanged 与版本号。/api/messages{
"mailboxAddress": "owner@example.com",
"to": "friend@example.net",
"subject": "Hello",
"text": "Message body",
"idempotencyKey": "request_12345678"
}
发件邮箱必须属于当前用户并处于启用状态。相同 idempotencyKey 不会重复投递,也不会重复计入限速。
/api/drafts草稿列表/api/drafts新建草稿/api/drafts/{draftId}保存草稿/api/drafts/{draftId}丢弃草稿附件通过 multipart/form-data 上传,字段名为 file。单个最多 5 MiB,每封最多 5 个,合计最多 10 MiB。
/api/drafts/{draftId}/send{ "idempotencyKey": "request_12345678" }
管理员接口继续执行角色检查。全站邮件与备份恢复演练等高风险能力只对主管理员开放,读取与修改操作会写入审计日志。
GET /api/admin/messages筛选、正文、附件、原文与批量操作GET /api/admin/deployment-checkcore、security、mail 三组状态POST /api/admin/backups/drill只读检查,不导入或覆盖生产对象POST /api/admin/version/update按 Release Tag 提交 SHA 触发构建GET /api/admin/audit-logs敏感字段递归移除PATCH /api/admin/settings/outbound-rate-limit全局默认与用户覆盖401UnauthorizedAccess Token 过期、被撤销或认证缺失。403Forbidden角色或 Scope 不允许当前操作,或注册功能关闭。409Conflict启用功能所需的 Worker 配置不完整。429Rate limited读取 Retry-After 后再重试。503UnavailableTurnstile 等必需验证服务不可用时失败关闭。/api/config公开运行配置与外部注册状态
/api/register外部注册普通用户
/api/session查询当前 Cookie 或 Bearer 会话
/api/auth/token签发桌面设备令牌
/api/auth/token/refresh轮换 Access 与 Refresh Token
/api/auth/token/revoke撤销设备会话
/api/mailboxes当前用户邮箱列表
/api/mailboxes按用户权限创建邮箱
/api/mailboxes/{address}启停邮箱或设置主邮箱
/api/mailboxes/{address}隐藏邮箱并启动异步清理
/api/messages邮件列表、筛选与游标分页
/api/messages使用已配置发信服务发送邮件
/api/messages/{id}邮件正文、线程与附件元数据
/api/messages/{id}更新已读、星标与文件夹状态
/api/messages/bulk最多 50 封邮件的批量操作
/api/messages/{id}永久删除垃圾箱邮件
/api/messages/{id}/raw下载原始 .eml
/api/messages/{id}/reply在线程内回复,支持附件
/api/drafts当前用户草稿列表
/api/drafts新建服务端草稿
/api/drafts/{id}保存指定草稿
/api/drafts/{id}/attachments上传草稿附件
/api/drafts/{id}/send幂等发送草稿及附件
/api/admin/statistics管理员邮件统计
/api/admin/messages主管理员查询全站邮件
/api/admin/audit-logs操作日志、筛选与分页
/api/admin/deployment-check资源与服务配置自检
/api/admin/version当前版本与 Release 状态
/api/admin/version/update按最新 Release Tag 启动构建
/api/admin/users管理员用户列表
/api/admin/backups/objects分页浏览备份对象
/api/admin/backups/drill只读备份结构演练
没有匹配的端点。
邀请、浏览器扩展 PKCE、注册保护、备份、更新与管理员设置的全部安全约束,请阅读仓库原始文档。