API 接口文档

Neko Clond 云控平台全部接口 · Base URL:https://clond.nekoaidev.top

鉴权方式

需要登录的接口支持两种鉴权:① 请求头 Authorization: Bearer <token>(邮箱登录返回); ② 自动携带的 neko_session Cookie(GitHub OAuth 登录后写入)。两者任一有效即可。

管理员接口(标记 admin)额外要求登录账号 role = admin, 由 GitHub 登录名(@xiaohondan 等,见环境变量 ADMIN_GITHUBS)或白名单邮箱(ADMIN_EMAILS)自动授予。

目录

公开 · 账号鉴权 · 第三方登录 · 云控(需登录) · 管理后台(需 admin)

公开接口

GET/api/health公开

服务健康检查。

返回示例
{ "ok": true }

账号鉴权

POST/api/register公开

邮箱注册(密码 PBKDF2 加盐哈希)。命中 ADMIN_EMAILS 的邮箱自动成为管理员。

请求体
{ "email": "you@example.com", "password": "至少8位", "name": "可选昵称" }
返回
{ "token": "<jwt>", "user": { "id": 1, "email": "...", "role": "user" } }
POST/api/login公开

邮箱登录。命中管理员白名单则升级为 admin。

请求体
{ "email": "you@example.com", "password": "你的密码" }
curl 示例
curl -X POST https://clond.nekoaidev.top/api/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"12345678"}'
GET/api/me需登录

获取当前用户信息(含 role)。

返回
{ "user": { "id": 1, "email": "...", "name": "...", "provider": "github", "role": "admin" } }
POST/api/logout需登录

注销当前会话(清除 Cookie)。

第三方登录

GET/api/auth/github公开

跳转 GitHub 授权页。完成后回跳 /api/auth/github/callback 并写入会话 Cookie,重定向到 /dashboard.html。

GET/api/auth/github/callback公开

GitHub OAuth 回调:换 token → 取资料 → 查找/创建用户 → 若登录名在 ADMIN_GITHUBS 则授予 admin → 签发会话。Microsoft 路由为 /api/auth/microsoft(/callback)(暂未启用)。

云控接口(需登录)

GET/api/stats需登录

当前用户的概览统计:设备总数 / 在线数 / 今日任务 / 今日调用。

GET/api/devices需登录

列出当前用户的设备(搜索 ?q=、按状态 ?status=)。

POST/api/devices需登录

创建设备。

请求体
{ "name": "边缘节点-01", "type": "device", "status": "online", "ip": "10.0.0.5", "group_name": "default", "note": "可选备注" }
GET/api/devices/<id>需登录

获取单个设备详情。

PUT/api/devices/<id>需登录

更新设备(名称/IP/状态/分组/备注)。

DELETE/api/devices/<id>需登录

删除设备。

GET/api/tasks需登录

列出当前用户的指令/任务下发记录。

POST/api/tasks需登录

下发指令。指定 device_id 单台下发;不填则群发全部设备。

请求体
{ "command": "restart", "device_id": "设备ID 或留空群发" }
GET/api/logs需登录

当前用户的 API 调用日志。

POST/api/call需登录

API 调试器:服务端代发请求,带 SSRF 防护(拦截内网/回环地址),并写入调用日志。

请求体
{ "method": "GET", "url": "https://api.example.com/ping", "headers": {"X-Test":"1"}, "body": "可选请求体" }

管理后台接口(需 admin)

以下接口均校验 role = admin,非管理员返回 403。前端入口为隐蔽页面 /cabinet.html(不在导航展示,仅管理员登录后控制台出现入口)。

GET/api/admin/statsadmin

全站统计:用户数 / 设备数 / 在线数 / 任务数 / 调用数等。

GET/api/admin/usersadmin

列出全部用户(?q= 搜索,?role=admin|user 过滤)。

POST/api/admin/users/<id>admin

修改用户角色。

请求体
{ "role": "admin" }   // 或 "user"
GET/api/admin/devicesadmin

全站设备(跨用户,含所属用户邮箱)。

GET/api/admin/tasksadmin

全站任务(跨用户)。

GET/api/admin/logsadmin

全站 API 调用日志(跨用户)。

Neko Clond API · 部署于 Cloudflare Pages Functions + D1 · 所有数据按 owner 隔离