📱 应用管理
GET
/auth/token
获取认证Token (使用client_id和client_secret)
🌐 请求URL
📝 请求参数 (Query)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| client_id | string | 是 | 应用ID |
| client_secret | string | 是 | 应用密钥 |
📥 响应示例
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expiration": 2592000
}
}
🧪 在线测试
GET
/apps
获取应用列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"name": "测试应用",
"client_id": "xxxxx",
"client_secret": "xxxxx",
"scopes": ["crons", "envs"],
"status": 1
}]
}
🧪 在线测试
POST
/apps
创建应用
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 应用名称 |
| scopes | string[] | 是 | 权限范围数组 |
📤 请求示例
{
"name": "我的应用",
"scopes": ["crons", "envs", "scripts"]
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/apps
更新应用
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 应用ID |
| name | string | 是 | 应用名称 |
| scopes | string[] | 是 | 权限范围数组 |
📤 请求示例
{
"id": 1,
"name": "更新后的应用名",
"scopes": ["crons", "envs", "logs"]
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/apps
删除应用
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 应用ID数组 |
📤 请求示例
[1, 2, 3]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/apps/:id/reset-secret
重置应用密钥
🌐 请求URL
📝 请求参数 (URL)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 应用ID(URL路径参数) |
📤 请求示例
PUT /apps/1/reset-secret
📥 响应示例
{
"code": 200,
"data": {
"client_secret": "new_secret_xxxxx"
}
}
🧪 在线测试
👤 用户管理
POST
/user/login
用户登录
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
📤 请求示例
{
"username": "admin",
"password": "admin123"
}
📥 响应示例
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"username": "admin",
"twoFactorActivated": false
}
}
🧪 在线测试
POST
/user/logout
用户登出
🌐 请求URL
📤 请求示例
(无需请求体)
📥 响应示例
{"code": 200}
🧪 在线测试
GET
/user
获取用户信息
🌐 请求URL
📤 请求示例
(无需请求体)
📥 响应示例
{
"code": 200,
"data": {
"username": "admin",
"avatar": "avatar.png",
"twoFactorActivated": false
}
}
🧪 在线测试
PUT
/user
更新用户名和密码
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| username | string | 是 | 新用户名 |
| password | string | 是 | 新密码 |
📤 请求示例
{
"username": "newadmin",
"password": "newpassword123"
}
📥 响应示例
{"code": 200}
🧪 在线测试
GET
/user/two-factor/login
获取双因素认证信息
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"secret": "XXXXXXXXXXXX",
"url": "otpauth://totp/..."
}
}
🧪 在线测试
PUT
/user/two-factor/activate
激活双因素认证
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 双因素认证码 |
📤 请求示例
{"code": "123456"}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/user/two-factor/deactivate
停用双因素认证
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 双因素认证码 |
📤 请求示例
{"code": "123456"}
📥 响应示例
{"code": 200}
🧪 在线测试
GET
/user/notification
获取通知配置
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"type": "email",
"config": {"to": "user@example.com"}
}
}
🧪 在线测试
PUT
/user/notification
更新通知配置
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 通知类型(email/webhook等) |
| config | object | 是 | 通知配置 |
📤 请求示例
{
"type": "email",
"config": {"to": "user@example.com"}
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/user/init
初始化用户
🌐 请求URL
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/user/notification/init
初始化通知配置
🌐 请求URL
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/user/avatar
上传用户头像
🌐 请求URL
📝 请求参数 (FormData)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| avatar | file | 是 | 头像文件 |
📥 响应示例
{
"code": 200,
"data": {
"avatar": "/uploads/xxx.png"
}
}
🧪 在线测试
需要使用FormData上传文件,请使用Postman等工具测试
GET
/user/login-log
获取登录日志
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"timestamp": 1234567890,
"address": "127.0.0.1",
"platform": "web",
"status": "success"
}]
}
🧪 在线测试
⏰ 定时任务管理
GET
/crons
获取定时任务列表
🌐 请求URL
📝 请求参数 (Query)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| searchValue | string | 否 | 搜索关键词 |
📤 请求示例
GET /crons?searchValue=测试
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"name": "测试任务",
"command": "node test.js",
"schedule": "0 0 * * *",
"status": 0,
"isDisabled": 0,
"isPinned": 0,
"createdAt": "2025-01-01 00:00:00"
}]
}
🧪 在线测试
POST
/crons
创建定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 任务名称 |
| command | string | 是 | 执行命令 |
| schedule | string | 是 | Cron表达式 |
📤 请求示例
{
"name": "测试任务",
"command": "node test.js",
"schedule": "0 0 * * *"
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/run
运行定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1, 2, 3]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/stop
停止定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons
更新定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 任务ID |
| name | string | 是 | 任务名称 |
| command | string | 是 | 执行命令 |
| schedule | string | 是 | Cron表达式 |
📤 请求示例
{
"id": 1,
"name": "更新的任务",
"command": "node updated.js",
"schedule": "0 1 * * *"
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/crons
删除定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1, 2, 3]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/disable
禁用定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/enable
启用定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/pin
置顶定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/crons/unpin
取消置顶定时任务
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 任务ID数组 |
📤 请求示例
[1]
📥 响应示例
{"code": 200}
🧪 在线测试
GET
/crons/:id
获取任务详情
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"id": 1,
"name": "测试任务",
"command": "node test.js",
"schedule": "0 0 * * *"
}
}
🧪 在线测试
GET
/crons/:id/log
获取任务日志
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": "任务执行日志内容..."
}
🧪 在线测试
🌍 环境变量管理
GET
/envs
获取环境变量列表
🌐 请求URL
📤 请求示例
(无需请求体)
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"name": "TEST_ENV",
"value": "test_value",
"remarks": "测试环境变量",
"status": 0
}]
}
🧪 在线测试
POST
/envs
创建环境变量
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 变量名(字母、数字、下划线) |
| value | string | 是 | 变量值 |
| remarks | string | 否 | 备注 |
📤 请求示例
[{
"name": "TEST_ENV",
"value": "test_value",
"remarks": "测试环境变量"
}]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/envs
更新环境变量
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 环境变量ID |
| name | string | 是 | 变量名 |
| value | string | 是 | 变量值 |
| remarks | string | 否 | 备注 |
📤 请求示例
{
"id": 1,
"name": "TEST_ENV",
"value": "new_value",
"remarks": "更新后的备注"
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/envs
删除环境变量
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 环境变量ID数组 |
📤 请求示例
[1, 2, 3]
📥 响应示例
{"code": 200}
🧪 在线测试
GET
/envs/:id
获取环境变量详情
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"id": 1,
"name": "TEST_ENV",
"value": "test_value"
}
}
🧪 在线测试
PUT
/envs/disable
禁用环境变量
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 环境变量ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/envs/enable
启用环境变量
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 环境变量ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/envs/name
更新环境变量名称
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 环境变量ID |
| name | string | 是 | 新名称 |
📤 请求示例
{
"id": 1,
"name": "NEW_ENV_NAME"
}
📥 响应示例
{"code": 200}
🧪 在线测试
📝 脚本管理
GET
/scripts
获取脚本列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"title": "script.js",
"value": "script.js",
"key": "script.js",
"mtime": 1234567890000,
"children": []
}]
}
🧪 在线测试
GET
/scripts/:file
获取脚本内容
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": "console.log('Hello');"
}
🧪 在线测试
POST
/scripts
创建脚本文件
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| filename | string | 是 | 文件名 |
| content | string | 是 | 文件内容 |
| path | string | 否 | 文件路径 |
📤 请求示例
{
"filename": "newscript.js",
"content": "console.log('Hello');"
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/scripts
更新脚本文件
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| filename | string | 是 | 文件名 |
| content | string | 是 | 新内容 |
| path | string | 否 | 文件路径 |
📤 请求示例
{
"filename": "test.js",
"content": "console.log('Updated');"
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/scripts
删除脚本文件
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| filename | string | 是 | 文件名 |
| path | string | 否 | 文件路径 |
📤 请求示例
{"filename": "test.js"}
📥 响应示例
{"code": 200}
🧪 在线测试
⚙️ 配置管理
GET
/configs
获取配置列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"name": "config.sh",
"content": "export VAR=value"
}]
}
🧪 在线测试
GET
/configs/:id
获取配置详情
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"id": 1,
"name": "config.sh",
"content": "export VAR=value"
}
}
🧪 在线测试
POST
/configs
创建配置
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 配置名称 |
| content | string | 是 | 配置内容 |
📤 请求示例
{
"name": "custom.sh",
"content": "export MY_VAR=123"
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/configs
更新配置
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 配置ID |
| name | string | 是 | 配置名称 |
| content | string | 是 | 配置内容 |
📤 请求示例
{
"id": 1,
"name": "config.sh",
"content": "export UPDATED_VAR=456"
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/configs
删除配置
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 配置ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
📋 日志管理
GET
/logs
获取日志列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"name": "log_2025-01-01.log",
"size": 1024,
"mtime": 1234567890000
}]
}
🧪 在线测试
GET
/logs/:file
获取日志内容
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": "日志内容..."
}
🧪 在线测试
DELETE
/logs
删除日志文件
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| filename | string | 是 | 日志文件名 |
📤 请求示例
{"filename": "app.log"}
📥 响应示例
{"code": 200}
🧪 在线测试
📦 依赖管理
GET
/dependencies
获取依赖列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"type": "nodejs",
"name": "axios",
"status": 0
}]
}
🧪 在线测试
POST
/dependencies
安装依赖
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 依赖类型(nodejs/python3/linux) |
| name | string | 是 | 依赖名称 |
📤 请求示例
[{
"type": "nodejs",
"name": "axios"
}]
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/dependencies
删除依赖
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 依赖ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
📡 订阅管理
GET
/subscriptions
获取订阅列表
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": [{
"id": 1,
"name": "测试订阅",
"url": "https://example.com/sub.json",
"type": "public-repo",
"status": 0
}]
}
🧪 在线测试
POST
/subscriptions
创建订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 订阅名称 |
| url | string | 是 | 订阅URL |
| type | string | 是 | 订阅类型 |
| schedule | string | 否 | 定时执行cron表达式 |
📤 请求示例
{
"name": "我的订阅",
"url": "https://example.com/sub.json",
"type": "public-repo",
"schedule": "0 0 * * *"
}
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/subscriptions
更新订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | number | 是 | 订阅ID |
| name | string | 是 | 订阅名称 |
| url | string | 是 | 订阅URL |
| type | string | 是 | 订阅类型 |
| schedule | string | 否 | 定时执行cron表达式 |
📤 请求示例
{
"id": 1,
"name": "更新的订阅",
"url": "https://example.com/new.json",
"type": "public-repo"
}
📥 响应示例
{"code": 200}
🧪 在线测试
DELETE
/subscriptions
删除订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 订阅ID数组 |
📤 请求示例
[1, 2]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/subscriptions/run
运行订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 订阅ID数组 |
📤 请求示例
[1]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/subscriptions/disable
禁用订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 订阅ID数组 |
📤 请求示例
[1]
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/subscriptions/enable
启用订阅
🌐 请求URL
📝 请求参数 (Body)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ids | number[] | 是 | 订阅ID数组 |
📤 请求示例
[1]
📥 响应示例
{"code": 200}
🧪 在线测试
⚡ 系统管理
GET
/system
获取系统信息
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"version": "2.14.0",
"isInitialized": true,
"platform": "linux"
}
}
🧪 在线测试
PUT
/system/update-check
检查系统更新
🌐 请求URL
📥 响应示例
{
"code": 200,
"data": {
"hasNewVersion": true,
"latestVersion": "2.15.0"
}
}
🧪 在线测试
PUT
/system/update
更新系统
🌐 请求URL
📥 响应示例
{"code": 200}
🧪 在线测试
PUT
/system/reload
重新加载系统
🌐 请求URL
📥 响应示例
{"code": 200}
🧪 在线测试